通俗的讲,Controls.Remove 和 Controls.Clear()的主要差别在于,Controls.Remove 可以实现一个一个的删除控件,而 Controls.Clear()是将所有的控件一次性强制删除。
如果使用foreach方法,借助Controls.Remove,按理说也可以做到删除全部控件,即:
foreach (Control mControl in this.panPic.Controls)
{
this.panPic.Controls.Remove(mControl);
}
这就是删除一个名为panPic的panel中的所有控件的方法。但是
今天在写使用我的一个自定义控件时遇到了一个问题:
当我想删除panel上的所有自定义控件时,如果使用Control.Remove方法来一个一个的删除时,可能会出现某些控件删除不了的情况。如果使用this.panPic.Controls.Clear();则可以将控件全部删除。所以得出的结论是:
如果想要全部删除所有控件,使用this.panPic.Controls.Clear();方法,而不是一个一个的用Controls.Remove删除掉。