从另一个表单中显示表单

Moh*_*oud 4 c# winforms

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

        Form2 f2 = new Form2();
        f2.Show();
Run Code Online (Sandbox Code Playgroud)

或者我与"所有者"合作:

        Form2 tempForm = new Form2();
        this.AddOwnedForm(tempForm);
        tempForm.Show();
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 8

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

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

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


Dan*_*ker 5

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

当您使用时,AddOwnedForm()您基本上将表单锁定在一起,这样当一个表单最小化时,另一个表单也会最小化。该表单也始终显示在所属表单的顶部,类似于模式对话框。