我正在尝试创建一个将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