当我想通过单击另一个表单中的按钮来显示表单(C#)时,我通常会从我想要显示的表单中创建一个对象并使用show方法:
Form2 f2 = new Form2();
f2.Show();
或者我与“所有者”合作:
Form2 tempForm = new Form2();
this.AddOwnedForm(tempForm);
tempForm.Show();
这两种方式产生相同的结果,但最好的是什么,它们之间有什么区别?
答案 0 :(得分:7)
除命名之外的唯一区别是,在第二个中你打电话给AddOwnedForm,而在第一个你不打电话。查看我们看到的文档:
当表单由另一个表单拥有时,它将被最小化并使用所有者表单关闭。例如,如果Form2由Form1表单拥有,如果Form1关闭或最小化,Form2也将关闭或最小化。拥有的表单也不会在其所有者表单后面显示。您可以使用窗口的自有窗体,例如查找和替换窗口,当选择所有者窗体时,窗口不应显示在所有者窗体后面。
因此,如果您希望表单的这种行为一起最小化,并且总是显示在另一个上面,请使用AddOwnedForm。如果您不想要此行为,请不要使用它。
答案 1 :(得分:3)
默认情况下,Microsoft在创建新的Windows窗体项目时使用Form f = new Form(); f.Show();
来显示主窗体,并且这些方法之间的差异(性能差异可能微乎其微)。使用Show()
方法,而不是仅设置f.Visible = true;
也更合乎逻辑。
当您使用AddOwnedForm()
时,您基本上将表单锁定在一起,以便在一个表单最小化时,另一个表单也是。表单也始终显示在拥有表单的顶部,类似于模式对话框。