winform自定義元件建立失敗——未將物件設定引用到例項
自定義了一個元件,從工具箱中拖動時報錯:建立元件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物件為空。