簡體   English   中英

C#-在GroupBox中更改自定義控件的位置(返回空引用異常)

[英]C# - Change Location of Custom Control inside GroupBox (returns null reference exception)

我正在設計一個自定義控件的項目中,試圖將其添加到組框中並在其中找到它。

初始化並將控件添加到框中的步驟可以正常工作,但是隨后我嘗試移動或調整控件大小的任何操作都會導致異常。

        //initialise using object in outputs collection
        VitalsVisual vitalsVisual = vitalOutputs.getVitalsVisual();
        //add to relevant groupbox
        grpbxIntraOp.Controls.Add(vitalsVisual);
        //change location (coordinates within groupbox)
        vitalsVisual.Location = new Point(249, 256); //THROWS EXCEPTION
        //resize
        vitalsVisual.Size = new Size(494, 342); //THROWS EXCEPTION IF REACHED

我在指示的任一行上得到的都是“對象引用未設置為對象的實例”。 我不太了解這一點,因為它指向VitalsVisual vitalsVisual尚未初始化,但是調用了構造函數,並且Controls.Add()命令正在工作。 當然,如果尚未初始化,此命令將引發相同的異常。

有人可以在這里發現什么地方出問題嗎? 真的很感謝朝着正確的方向前進!

謝謝馬克

有趣,但這是設計使然。

測試:

Button button = null;
this.Controls.Add(button);
button.Location = Point.Empty;

這樣做是一樣的,即它在最后一行而不是在添加 ..時拋出。

因此,允許嘗試null對象添加到Controls集合。

我寫了“ trying”,因為Controls.Add實際上悄然失敗了

Button button = null;
Console.WriteLine( this.Controls.Count + " controls now.";
this.Controls.Add(button);
Console.WriteLine( "Still " + this.Controls.Count + " controls.";

計數無變化。

查看源代碼可以確認這一點:

public virtual void Add(Control value) { if (value == null) return; ...

綜上所述:您的函數肯定會返回一個空對象,但該錯誤得到了抑制。 它是錯誤還是功能?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM