我正在嘗試創建一個將usercontrols添加到我的mainform的函數。我想這個函數也可以從usercontrols自己獲得,所以我把它變成靜態的。如何從靜態方法添加usercontrols(以winforms形式)?
我的問題是,當它是靜態的我不能使用this.Controls.Add(ucontrol);
,我試圖將其更改爲ActiveForm.Controls.Add(ucontrol);
但後來ActiveForm是NULL,並沒有控件屬性(引發異常)。
更新#1:最後我做這樣的事情的用戶控件中:
MainForm ref_to_mainform_to_gain_access_to_functions = (MainForm)Parent;
ref_to_mainform_to_gain_access_to_functions.DisplayControl(ucontrol);
也許它甚至更好,但我仍然認爲它可能有從靜態方法訪問MainForm的?
更新#2:
Application.OpenForms["FormName"]
從靜態方法奏效。
我仍然試圖找出,如果usercontrol整個目的是作爲一個菜單與按鈕,顯示其他usercontrols onclick,它仍然是一個'設計犯罪'調用mainform函數(一個函數顯示usercontrols)從用戶控制? (就像我在'更新#1'中所做的那樣)
這是Winforms提醒您您做錯了一種方式之一。用戶控件應該永遠不會將控件添加到其父項中。舉辦活動。 – 2012-07-20 11:51:09
@HansPassant - 你能解釋一下爲什麼這麼錯? – BornToCode 2012-07-20 11:53:23