【问题标题】:Show a form from another form从另一个表单显示一个表单
【发布时间】:2010-04-11 21:50:24
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 你也可以这样做:f2.Show(this);表示所有者。

标签: c# winforms


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    当您使用AddOwnedForm() 时,您实际上将表单锁定在一起,这样当一个表单最小化时,另一个表单也会被最小化。表单也总是显示在在拥有的表单之上,类似于模式对话框。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多