在回答我最近遇到的一个问题(Here)时,Hans Passant 说我应该设置DialogResult
关闭我的表格,而不是form.Close()
虽然我似乎无法找出原因?
如果我没看错的话,MSDN 文档指出这样做只会隐藏表单,而不是像我认为.Close()
的那样正确处理它?
从文档中提取。
当用户单击对话框的关闭按钮或设置 DialogResult 属性的值时,不会自动调用 Close 方法。相反,该表单被隐藏并且可以在不创建对话框的新实例的情况下再次显示。由于这种行为,当您的应用程序不再需要该表单时,您必须调用该表单的 Dispose 方法。
另一方面,微软创建了一个支持页面,说明如何使用 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();
};
}