我继承了一些代码,想由你们来运行这个修改,我关心的是内存管理。
假设我有一个“基本”表单,上面有一堆打开“对话框”表单的按钮。打开对话框表单的推荐模式是什么?目前我们像这样显示“对话框”表单(在“基本”表单代码中,点击按钮时):
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,会关闭Dialog,调用者/所有者有一些反馈。
而且您不必担心 Close 或 Dispose。
关于WinForms 对话框窗体——关闭还是处置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8081822/