c# – 如何在没有容器更新的情况下从容器中删除控件

我有一个普通的Panel控件,其中包含一堆用户控件.目前,我做了以下事情:

panel.Controls.Clear();

但这有效,我看到(虽然很快)每个控制单独消失.

使用SuspendLayout和ResumeLayout没有任何明显的效果.

问题:有没有办法可以删除所有控件,并且只有在删除了所有子控件后才更新容器?

编辑:我正在删除的控件是从UserControl派生的,所以我可以控制它们的绘图行为.是否有一些我可以覆盖的功能,以防止更新,因为它们被删除?

解决方法:

谢谢汉斯的建议 – 是的,事实证明我是在泄漏控件.

这是我最终做的事情:

 panel.Visible = false;

 while (panel.Controls.Count > 0)
 {
    panel.Controls[0].Dispose();
 }

 panel.Visible = true;

基本上,我在处理每个控件之前隐藏了整个面板(没有边框).处理每个控件会自动从父容器中删除所述控件,这很好.最后,我再次让容器可见.

上一篇:c#-将元素添加到Microsoft WinForm控件


下一篇:Arcgis andoid开发之应用百度地图接口实现精准定位与显示