【发布时间】:2010-01-11 21:50:13
【问题描述】:
当用户使用右上角的 X 或 Alt+F4 关闭 System.Windows.Forms.Form 时,它会自动释放吗?表单用form.Show(this)显示,而不是form.ShowDialog(...);
【问题讨论】:
当用户使用右上角的 X 或 Alt+F4 关闭 System.Windows.Forms.Form 时,它会自动释放吗?表单用form.Show(this)显示,而不是form.ShowDialog(...);
【问题讨论】:
对于Show,是的(在WmClose 的末尾)。对于ShowDialog,不,不是。有趣;-p
对于 ShowDialog,see MSDN:
由于显示为对话框的表单没有关闭,因此当您的应用程序不再需要该表单时,您必须调用该表单的 Dispose 方法。
为了证明这一点:
Form main = new Form();
Form test = new Form();
test.Text = "Close me";
test.Disposed += delegate {
main.Text = "Second form was disposed";
};
main.Shown += delegate {
test.Show();
};
Application.Run(main);
【讨论】:
ShowDialog 显示的表单?好吧,可能不是泄漏,但清理底层窗口句柄可能需要更长的时间(GC)。