1. 程式人生 > >winform自定義元件建立失敗——未將物件設定引用到例項

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物件為空。