2010-04-11 105 views
3

显示形式当我想显示形式(C#)通过点击在另一种形式的按钮我通常创建从我要显示和使用show方法的形式的对象:从另一种形式

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

或我的“所有者”的工作:

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

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

+0

你也可以这样做:f2.Show(this);以表明所有者。 – 2010-04-11 22:21:49

回答

7

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

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

所以,如果你想要这些表单的行为被一起最小化,并且一个总是显示在另一个之上,使用AddOwnedForm。如果您不想要这种行为,请不要使用它。

3

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

当您使用AddOwnedForm()时,您基本上将这些表格锁定在一起,这样当一个表格被最小化时,另一个表格也是如此。该表格也总是在之上显示,拥有形式类似于模态对话框。