gpt4 book ai didi

c# - 哪种调用 Form.ShowDialog() 的方法更好?

转载 作者:可可西里 更新时间:2023-11-01 08:14:26 26 4
gpt4 key购买 nike

显示模态对话框的更好方式是什么?

form1 frm=new form1();
frm.showDialog()

(new form1()).showDialog();

最佳答案

没有一个比另一个“更好”;它们完全等价!

但是,在这种特殊情况下,两者都是错误的ShowDialog method要求您调用表单上的 Dispose 方法。与 ShowClose 组合不同,这不是自动完成的。来自 MSDN:

When a form is displayed as a modal dialog box, clicking the Close button (the button with an X at the upper-right corner of the form) causes the form to be hidden and the DialogResult property to be set to DialogResult.Cancel. Unlike non-modal forms, the Close method is not called by the .NET Framework when the user clicks the close form button of a dialog box or sets the value of the DialogResult property. Instead the form is hidden and can be shown again without creating a new instance of the dialog box. Because a form displayed as a dialog box is hidden instead of closed, you must call the Dispose method of the form when the form is no longer needed by your application.

因此,您应该选择以下(等效)形式之一:

using (Form1 frm = new Form1())
{
frm.ShowDialog();
}

Form1 frm = new Form1();
frm.ShowDialog();
frm.Dispose();

ShowDialog 没有自动处理表单的原因很简单,即使不是很明显。事实证明,应用程序通常希望在窗体关闭后从模态对话框窗体的实例中读取值,例如在窗体控件中指定的设置。如果表单被自动处理,您将无法通过访问表单对象的属性来读取这些值。因此,程序员有责任在他(她)完成时处理显示为模式对话框的表单。

关于c# - 哪种调用 Form.ShowDialog() 的方法更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8624654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com