自定义了一个组件,从工具箱中拖动时报错:创建组件xxx失败……未将对象设置引用到实例。
到designer.cs文件中一看,其中只有单单的申明语句:private AirOne.GUI.Main_Form.UC_PicBoxTest uC_PicBoxTest1;
并没有实例化和其他的相关设置。
于是在designer.cs中手动添加:
1,实例化:this.uC_PicBoxTest1 = new AirOne.GUI.Main_Form.UC_PicBoxTest();
2,该控件的一些相关设置:
//
// uC_PicBoxTest1
//
this.uC_PicBoxTest1.BackColor = System.Drawing.Color.Transparent;
this.uC_PicBoxTest1.Location = new System.Drawing.Point(4, 4);
this.uC_PicBoxTest1.Name = "uC_PicBoxTest1";
this.uC_PicBoxTest1.Size = new System.Drawing.Size(764, 451);
this.uC_PicBoxTest1.TabIndex = 0;
3,由于项目中该控件是由一个选项卡tpImgTest触发,还要添加:
this.tpImgTest.Controls.Add(this.uC_PicBoxTest1);
OK,问题解决了。至于为什么不能自动添加该控件,还在疑惑中?求解。
4,网上找到的其他的错误原因:
错误:System.NullReferenceException: 未将对象引用设置到对象的实例
第一种:重复定义造成未将对象引用设置到对象的实例错误
一般在C#中造成“未将对象引用设置到对象的实例”错误都是控件名称与codebehind里面的没有对应,对于初学编程的人,而在编码中重复定义也会造成这种问题的产生。
第二种:空对象引用导致错误
1。控件不存在。(可加入判断是否为null来解决)
2。执行权限不够。加ASPNET和EVETRYONE所有权限。
1、ViewState 对象为Unll。
2、DateSet 空。
3、sql语句或Datebase的原因导致DataReader空。
4、声明字符串变量时未赋空值就应用变量。
5、未用new初始化对象。
6、Session对象为空。