[英]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.