C#表单-清除表单中的按钮、图片框、,

C#表单-清除表单中的按钮、图片框、,,c#,forms,controls,C#,Forms,Controls,这就是问题所在: 我添加了许多按钮、图片框、文本框和其他控件,如下所示: btnStart=new按钮()bla bla bla文本 我一直在补充更多。所以,我知道我可以一个接一个地移除它们: Controls.Remove(btnStart); 但我想知道的是,是否有一种方法可以一次删除所有这些对象,而不是在我要删除它们时指定每一个对象。基本上,我想创建新的: private void ClrScr() { //Help??? } 这将删除从此窗体中调用的所有控件(所有操作都在一个窗体中完

这就是问题所在: 我添加了许多按钮、图片框、文本框和其他控件,如下所示:

btnStart=new按钮()bla bla bla文本

我一直在补充更多。所以,我知道我可以一个接一个地移除它们:

Controls.Remove(btnStart);
但我想知道的是,是否有一种方法可以一次删除所有这些对象,而不是在我要删除它们时指定每一个对象。基本上,我想创建新的:

private void ClrScr() { //Help??? }
这将删除从此窗体中调用的所有控件(所有操作都在一个窗体中完成)。 有人能帮忙吗?这方面我还是个新手。

控件。Clear()
应该可以

编辑:

正如下面指出的-
Controls.Clear()
会导致内存泄漏。看看这个答案:

控件。清除()
就可以了

编辑:


正如下面指出的-
Controls.Clear()
会导致内存泄漏。看看这个答案:

如果您想删除mainform的所有子控件,只需使用
Controls.Clear()

如果有一些不想删除的固定控件,请将动态生成的控件添加到面板中。然后您可以调用
mypanel.Controls.Clear()
仅删除这些控件


编辑:它看起来像控件。清除会导致内存泄漏,因此您可以使用Hans Passant提供的控件。

如果要删除主窗体的所有子控件,只需使用
Controls.Clear()

如果有一些不想删除的固定控件,请将动态生成的控件添加到面板中。然后您可以调用
mypanel.Controls.Clear()
仅删除这些控件


编辑:看起来像是控件。清除会导致内存泄漏,因此您可以使用Hans Passant提供的信息。

确实如此,非常感谢。@AntonioTehSumtin:请查看WouterHs答案中的注释。你不应该错过这个!我考虑了所有的答案。别担心:)的确如此,非常感谢。@AntonioTehSumtin:请也看看Wouters答案中的评论。你不应该错过这个!我考虑了所有的答案。别担心:)不确定,但我认为它只会移除它们,而不会处理它们。这不是内存泄漏的一种危险吗?如果从控件容器中删除控件对象,则不再有对这些控件的引用(如果您自己不在其他地方保存引用)。所以垃圾收集器将负责处理这些对象。在大多数情况下是的,但是如果你在某处有引用,你很快就会遇到麻烦。文档中有一个明确的警告:
调用Clear方法不会从内存中删除控制句柄。必须显式调用Dispose方法以避免内存泄漏。
MSDN警告ControlCollection.Clear()不会从内存中删除句柄。它确实会导致泄漏。不确定,但我认为它只会移除它们,但不会处理它们。这不是内存泄漏的一种危险吗?如果从控件容器中删除控件对象,则不再有对这些控件的引用(如果您自己不在其他地方保存引用)。所以垃圾收集器将负责处理这些对象。在大多数情况下是的,但是如果你在某处有引用,你很快就会遇到麻烦。文档中有一个明确的警告:
调用Clear方法不会从内存中删除控制句柄。必须显式调用Dispose方法以避免内存泄漏。
MSDN警告ControlCollection.Clear()不会从内存中删除句柄。它确实会导致泄漏。