【发布时间】:2013-05-26 15:25:30
【问题描述】:
在回答我最近的一个问题 (Here) 时,Hans Passant 表示我应该设置 DialogResult 而不是 form.Close() 来关闭我的表单,尽管我似乎无法找出原因?
如果我没看错,MSDN 文档指出这样做只会隐藏表单,而不是像我认为 .Close() 那样正确处理它?
Extract 来自文档。
当用户单击对话框的关闭按钮或设置 DialogResult 属性的值时,不会自动调用 Close 方法。相反,该表单被隐藏并且可以再次显示而无需创建对话框的新实例。由于这种行为,当您的应用程序不再需要该表单时,您必须调用该表单的 Dispose 方法。
另一方面,Microsoft 创建了一个support page,说明如何使用 DialogResult 属性,并在“验证它的工作原理”部分中声明单击该属性将关闭表单。
所以我的问题有两个,我应该继续使用 Close 还是 DialogResult ;并且对话框结果是否关闭或隐藏表单。从我在下面制作的代码(一个带有两个按钮的简单表单)来看,它似乎确实只是隐藏在this.Close() 上的断点被击中..(this.Close() 评论,表单仍然消失,只是不确定是否隐藏)
public Form1()
{
InitializeComponent();
button1.Click += (s, e) =>
{
//I edited my question to include using
using(Form1 form = new Form1())
{
form.ShowDialog();
}
};
button2.Click += (s, e) =>
{
this.DialogResult = DialogResult.OK;
this.Close();
};
}
【问题讨论】:
标签: c# winforms dialogresult