WinForms对话窗体 – 关闭或处理?

我已经继承了一些代码,并希望由大家运行这个修改,我关心的是内存管理.

让我们说我有一个“基础”表单与一堆打开“对话框”的按钮.打开对话窗体的建议模式是什么?目前我们显示“对话”窗体(在“基础”窗体代码中,按下按钮):

ChangePasswordForm frm = new ChangePasswordForm();
frm.ShowDialog();

然后关闭它(在“对话框”窗体代码中):

private void bCancel_Click(object sender, EventArgs e)
{
  this.Close();
  //this.Dispose();  <-- this is what I am considering adding.
}

添加Dispose的理由是,我担心这种形式是否被显示和关闭了很多次,每次创建一个新的表单实例,并且它的资源从未真正被释放 – 这是正确的吗?另外,如果表单在右上方有“关闭”X,那么我应该在FormClosed事件中放置一个Dispose()调用吗?

提前致谢.

最佳答案
我会使用一个using语句:

  using (var frm = new ChangePasswordForm()) {
      frm.ShowDialog();
  }

将其与DialogResult相结合:

private void bCancel_Click(object sender, EventArgs e)
{
   this.DialogResult = DialogResult.Cancel;
}

设置DialogResult,将关闭对话框,呼叫者/所有者有一些反馈.

你不用担心关闭或处理.

转载注明原文:WinForms对话窗体 – 关闭或处理? - 代码日志