[英]Telerik radgrid rebind() throws Object reference not set to instance of object error
[英]Picture box always throws object reference not set to instance of object error
我有一堂課,里面有一個畫框。 我已經創建了我的類的對象數組,但是當我嘗試創建新的圖片框時,出現錯誤提示,對象引用未設置為對象的實例。
這是我創建圖片框的方式
GreyHound[] dog;
public Form1()
{
InitializeComponent();
dog[1].MyPictureBox = new PictureBox();
dog[1].MyPictureBox = pictureBox1;
dog[2].MyPictureBox = new PictureBox();
dog[2].MyPictureBox = pictureBox2;
dog[3].MyPictureBox = new PictureBox();
dog[3].MyPictureBox = pictureBox3;
dog[4].MyPictureBox = new PictureBox();
dog[4].MyPictureBox = pictureBox4;
編輯代碼:
GreyHound []狗;
public Form1()
{
InitializeComponent();
dog = new GreyHound[4];
dog[0].MyPictureBox = new PictureBox();
dog[0].MyPictureBox = pictureBox1;
dog[1].MyPictureBox = new PictureBox();
dog[1].MyPictureBox = pictureBox2;
dog[2].MyPictureBox = new PictureBox();
dog[2].MyPictureBox = pictureBox3;
dog[3].MyPictureBox = new PictureBox();
dog[3].MyPictureBox = pictureBox4;
}
您的代碼有幾個嚴重的問題:
NullReferenceException
的原因有兩個:
GreyHound
數組,但從未對其進行初始化。 這意味着該dog
為null
並且嘗試訪問dog[1]
導致NullReferenceException。 GreyHound
是引用類型,則意味着您將必須為數組中的每個項目創建一個實例。 使用您當前的代碼,數組中的所有項目均為null
,這會導致在嘗試訪問數組中任何項目的屬性MyPictureBox
時導致NullReferenceException
,因為dog[1]
為null
。 MyPictureBox
分配一個PictureBox
的新實例,但是在下一行使用pictureBoxX
覆蓋該值。 像這樣修復您的代碼:
GreyHound[] dog = new GreyHound[4]; // solves problem 1.1
dog[0] = new GreyHound(); // solves problem 1.2
dog[0].MyPictureBox = pictureBox1;
dog[1] = new GreyHound(); // solves problem 1.2
dog[1].MyPictureBox = pictureBox2;
dog[2] = new GreyHound(); // solves problem 1.2
dog[2].MyPictureBox = pictureBox3;
dog[3] = new GreyHound(); // solves problem 1.2
dog[3].MyPictureBox = pictureBox4;
您不會在任何地方初始化數組:
dog = new GreyHound[4];
數組索引也從0開始,所以:
dog[0].MyPictureBox = new PictureBox();
dog[0].MyPictureBox = pictureBox1;
dog[1].MyPictureBox = new PictureBox();
dog[1].MyPictureBox = pictureBox2;
dog[2].MyPictureBox = new PictureBox();
dog[2].MyPictureBox = pictureBox3;
dog[3].MyPictureBox = new PictureBox();
dog[3].MyPictureBox = pictureBox4;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.