![](/img/trans.png)
[英]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.