在退出表单之前,是否需要处理动态创建的控件?

时间:2014-06-22 11:35:32

标签: c# winforms memory-leaks dispose

我使用using指令创建了我的选项表单的新实例,因此在我完成它时会自动处理它。我需要在关闭表单之前处理表单上动态创建的控件,还是在我调用this.Close()时自动处理它们?

1 个答案:

答案 0 :(得分:4)

通常不会,所有控件都是动态创建的。通常在InitializeComponent()方法中,当代码出现在其他地方时,它并没有根本不同。动态删除控件可能会让您遇到麻烦。

当他们的父母被处置时,控件会自动处理。因此,只要您通过其Collection属性将它们添加到父级,那么您就不需要额外的代码来处置。触发器正在关闭窗口,以显示使用Show()方法显示的表单,代码中的 using 语句用于显示ShowDialog()的表单。 / p>

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

泄露USER Objects是Winforms中一个非常常见的错误,垃圾收集器不会让你免于麻烦。始终非常警惕代码中的任何ControlCollection.Clear()或Remove / At()语句。