Set form as Parent throw exception “Top-level control cannot be added to a control”

你说的曾经没有我的故事 提交于 2019-12-10 02:06:20

问题


I want to access variables of a form from another form. On clicking a button inside my Main form, I want to set my Main form as Parent, then bring up another form (child form) wherein I will access variables of the Main form. My click handler is as follow:

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();
}

It compiles fine without any error. However, when I run the Main form and click on the System button, it throws me an exception. I do something similar in another code (not mine) with the same button click, and encounter no error (just with setting Main form as Parent).

What am I doing wrong? Is there something in my Main code that cause this?


回答1:


Best way would be to use EP.ShowDialog(this) and later use Owner property.




回答2:


You need the EP.TopLevel property to be set to false. It will let you to set a parent to it.

Further reading.

In case you only want to access variables and controls of another form, then maybe you can reach it in other ways, not trough a Parent relationship.




回答3:


OK, apparently the way to do it is to call

Form_Child.ShowDialog(this)

and then I can call

FromParent_aVariable = ((Form_Parent)this.Owner).aVariable;

or if I define aVariable in the namespace Properties then

FromParent_aVariable = NameSpace.Properties.Settings.Default.aVariable;

there are two ways.




回答4:


Form_EnterPassword EP = new Form_EnterPassword();
EP.MdiParent = this;       
EP.Show();

try this way, it helps for me. you need to set principalform as isMdicontainer = true at the form properties




回答5:


Writing this way, made the dialog display on the center of the parent form.

   Form_Child.StartPosition = FormStartPosition.CenterParent;
   Form_Child.ShowDialog(this);


来源:https://stackoverflow.com/questions/10746053/set-form-as-parent-throw-exception-top-level-control-cannot-be-added-to-a-contr

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!