Winforms 实例化表单和赋值给变量与简单实例化有什么区别?
我有一个windows窗体,它没有我希望从所有者处访问的任何事件或属性。有两种方法可以打开表单:Winforms 实例化表单和赋值给变量与简单实例化有什么区别?,winforms,variables,Winforms,Variables,我有一个windows窗体,它没有我希望从所有者处访问的任何事件或属性。有两种方法可以打开表单: frmExample ex = new frmExample(); ex.ShowDialog(this); 及 在内存分配等方面会有差异吗?是否有任何影响、利弊?就我个人而言,可能很天真,我更喜欢第二种方法 谢谢一个很大的区别是您将无法处理()表单实例。您应该知道,当您调用ShowDialog()时,处置不是自动的,仅当您调用Show()时。样板代码为: using (var dlg = new
frmExample ex = new frmExample();
ex.ShowDialog(this);
及
在内存分配等方面会有差异吗?是否有任何影响、利弊?就我个人而言,可能很天真,我更喜欢第二种方法
谢谢一个很大的区别是您将无法处理()表单实例。您应该知道,当您调用ShowDialog()时,处置不是自动的,仅当您调用Show()时。样板代码为:
using (var dlg = new frmExample()) {
if (dlg.ShowDialog() == DialogResult.Ok) {
// Access dlg properties
//...
}
}
您也许可以从这段代码中看出为什么表单不能自动处理。访问属性时可能会产生ObjectDisposedException。在访问完属性后,您必须自己处理它。using语句使其自动且异常安全
using (var dlg = new frmExample()) {
if (dlg.ShowDialog() == DialogResult.Ok) {
// Access dlg properties
//...
}
}