将窗体设置为父抛出异常"无法将顶级控件添加到控件"

CaT*_*aTx 10 c# forms exception parent

我想从另一个表单访问表单的变量.单击我的主窗体内的按钮,我想将我的主窗体设置为父窗口,然后调出另一个窗体(子窗体),其中我将访问主窗体的变量.我的点击处理程序如下:

private void btnSystem_Click(object sender, EventArgs e)
{
    Form_EnterPassword EP = new Form_EnterPassword();
    EP.Parent = this;        //error: Top-level control cannot be added to a control
    EP.ShowDialog();
}
Run Code Online (Sandbox Code Playgroud)

它编译好没有任何错误.但是,当我运行Main窗体并单击System按钮时,它会抛出异常.我使用相同的按钮单击在另一个代码(不是我的)中执行类似的操作,并且不会遇到任何错误(仅将主窗体设置为父窗口).

我究竟做错了什么?我的主代码中是否有导致此问题的内容?

Grz*_*z W 16

最好的方法是使用EP.ShowDialog(this)和以后使用Owner属性.

  • 诚然.忘了父母.只需使用"所有者". (3认同)

Mat*_*tzi 10

您需要将该EP.TopLevel属性设置为false.它将允许您为其设置父级.

进一步阅读.

如果您只想访问另一个表单的变量和控件,那么也许您可以通过其他方式访问它,而不是通过父关系.