2014-06-22 34 views
1

我已经使用using指令创建了我的选项表单的新实例,因此当它完成后它会自动处理。在关闭表单之前是否需要处理表单上动态创建的控件,或者当我拨打this.Close()时是否会自动处理这些控件?在退出表单之前是否需要处理动态创建的控件?

+0

只要他们有一个父集(他们应该有),处置是自动的。 –

回答

4

通常不,所有控件都是动态创建的。通常在InitializeComponent()方法中,当代码出现在其他地方时,它不会有根本的不同。动态删除控件是什么可以让你陷入困境。

控件在处理父对象时会自动处理。所以只要你通过它的Collection属性将它们添加到它们的父代,那么你不需要额外的代码来处理。该触发器将关闭用Show()方法显示的窗体的窗口,在您的代码中使用语句显示与ShowDialog()一起显示的窗体。

你可以使用任务管理器检查你是否正确。添加USER Objects列与查看+选择列(右键单击Windows 8中的列表视图标题)。柜台非常可靠。反复创建和关闭表单不得不不断增加显示的值。

泄漏USER对象是Winforms中非常常见的错误,垃圾收集器不会让您摆脱困境。始终是警惕您的代码中的任何ControlCollection.Clear()或Remove/At()语句。

+0

您应该确保删除了您可能已添加到动态添加的控件的任何事件处理程序。 –

+0

一般不会。同样的故事,InitializeComponent()也添加了事件处理程序,不必明确删除。事件处理程序在Form对象和控件之间创建循环依赖关系,但它们不会残留GC。 –

+1

谢谢。我在任务管理器中添加了该列,当我打开“选项”窗体并在关闭它时降低到其原始值时,此列就会增加。很好的答案。 – Abluescarab

相关问题