从另一个表单中显示表单

时间:2010-04-11 21:50:25

标签: c# winforms

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

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

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

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

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

2 个答案:

答案 0 :(得分:7)

除命名之外的唯一区别是,在第二个中你打电话给AddOwnedForm,而在第一个你不打电话。查看我们看到的文档:

  

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

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

答案 1 :(得分:3)

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

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