从另一个表单中显示表单

当我想通过单击另一个表单中的按钮来显示表单(C#)时,我通常会从我想要显示的表单创建一个对象并使用show方法:

Form2 f2 = new Form2(); f2.Show(); 

或者我与“所有者”合作:

  Form2 tempForm = new Form2(); this.AddOwnedForm(tempForm); tempForm.Show(); 

这两种方式产生相同的结果,但最好的是什么,它们之间有什么区别?

除了命名之外,唯一的区别是在第二个中你调用AddOwnedForm ,而在第一个你没有。 查看我们看到的文档:

当表单由另一个表单拥有时,它将被最小化并使用所有者表单关闭。 例如,如果Form2由Form1表单拥有,如果Form1关闭或最小化,Form2也将关闭或最小化。 拥有的表单也不会在其所有者表单后面显示。 您可以使用窗口的自有窗体,例如查找和替换窗口,当选择所有者窗体时,窗口不应显示在所有者窗体后面。

因此,如果您希望表单的这种行为一起最小化,并且总是显示在另一个上面,请使用AddOwnedForm。 如果您不想要此行为,请不要使用它。

Microsoft使用Form f = new Form(); f.Show(); Form f = new Form(); f.Show(); 默认情况下,在创建新的Windows窗体项目以显示主窗体时,这些方法之间可能存在微不足道的差异(性能)。 使用Show()方法,而不是仅设置f.Visible = true; 也更合乎逻辑。

当您使用AddOwnedForm()您基本上将表单锁定在一起,以便在一个表单最小化时,另一个表单也是。 表单也始终显示拥有表单的顶部 ,类似于模式对话框。