Nei*_*ell 1 .net instance winforms
创建WinForms Form实例的好方法是什么,显示它(非模态)但不必保持对它的引用?通常,一旦变量超出范围,表单就会关闭:
var form = new SuperDuperForm();
form.Show();
// Form has probably been closed instantly
Run Code Online (Sandbox Code Playgroud)
我不想跟踪表单的实例,我希望它能够在用户关闭表单时将其处理掉.我将要实现的一个想法是我用来打开和显示表单的一种控制器,它将跟踪它们并监视何时通过回调关闭它们.
我只是想知道是否有任何巧妙的技巧可以在没有它的情况下逃脱.有任何想法吗?
您根本不需要这样做 - Winforms会为您完成此操作.当您显示一个表单时,它会被添加到Application.OpenForms属性中,当您关闭表单时,它会自动删除.
Windows窗体在打开时永远不会有资格进行垃圾回收,并且在关闭时也会自动处理.从Form.Close文档引用:
关闭表单时,将关闭对象中创建的所有资源并处理表单.您可以通过处理
Closing事件并将传递的Cancel属性设置CancelEventArgs为事件处理程序来阻止在运行时关闭表单.如果您要关闭的表单是应用程序的启动表单,则应用程序结束.表单未在Close上处理时的两个条件是(1)它是多文档界面(MDI)应用程序的一部分,并且表单不可见; (2)您已使用表格显示
ShowDialog.在这些情况下,您需要Dispose手动调用以标记所有表单的垃圾收集控件.
换句话说,对于"发射并忘记"的一般情况,资源管理是自动的.
| 归档时间: |
|
| 查看次数: |
271 次 |
| 最近记录: |