博客转载地址:http://www.mzwu.com/article.asp?id=2254

//在panel1中添加20个Button
int row = -;
int rowcount = ; for (int i = ; i <= ; i++)
{
if (i % rowcount == )
row++; Button button = new Button();
button.Width = ;
button.Height = ;
button.Text = "button" + i.ToString();
button.Top = row * ( + );
button.Left = ((i-) % rowcount) * ( + ); panel1.Controls.Add(button);
}

使用foreach+Control.Controls移除所有Button:

foreach (Control con in panel1.Controls)
panel1.Controls.Remove(con);

结果发现只移除了10个,界面还剩下10个!改用for循环:

for (int i = ; i < panel1.Controls.Count; i++)
panel1.Controls.RemoveAt(i);

结果同上,正确的代码应为:

for (int i = panel1.Controls.Count - ; i >= ; i--)
panel1.Controls.RemoveAt(i);

究其原因,应是调用Remove或RemoveAt方法时,也改变了Controls内容所致,做个测试:

for (int i = ; i < panel1.Controls.Count; i++)
{
textBox1.Text += string.Format("i值:{0}, Controls.Count值:{1}, 移除:{2}\r\n", i, panel1.Controls.Count, panel1.Controls[i].Text);
panel1.Controls.RemoveAt(i);
}

结果:

i值:, Controls.Count值:, 移除:button1
i值:, Controls.Count值:, 移除:button3
i值:, Controls.Count值:, 移除:button5
i值:, Controls.Count值:, 移除:button7
i值:, Controls.Count值:, 移除:button9
i值:, Controls.Count值:, 移除:button11
i值:, Controls.Count值:, 移除:button13
i值:, Controls.Count值:, 移除:button15
i值:, Controls.Count值:, 移除:button17
i值:, Controls.Count值:, 移除:button19

测试发现:移除子控件应尽量用Remove或RemoveAt方法,若使用Clear方法,在多次动态添加/移除控件后,程序占用内存越来越高,估计是Clear没有及时释放资源所致。 

......

【转载】foreach+Control.Controls无法一次性移除所有子控件解决方法的更多相关文章

  1. swift 移除所有子控件

    /// 移除所有子控件 func removeAllSubViews(){ if self.view.subviews.count>0{ self.view.subviews.forEach({ ...

  2. (转载) Android RecyclerView 使用完全解析 体验艺术般的控件

    Android RecyclerView 使用完全解析 体验艺术般的控件 标签: Recyclerviewpager瀑布流 2015-04-16 09:07 721474人阅读 评论(458) 收藏  ...

  3. [转载]ExtJs4 笔记(8) Ext.slider 滚轴控件、 Ext.ProgressBar 进度条控件、 Ext.Editor 编辑控件

    作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...

  4. Xaml Controls Gallery 的五个没有用的控件

    HyperlinkButton 功能:这个控件可以实现点击按钮后跳到另一个按钮的功能. 我觉得这个功能有些多余,据我了解,一些深受欢迎的游戏大都具备的一个特点,那就是操作简单,界面中不会出现冗余的东西 ...

  5. 【转载】Android RecyclerView 使用完全解析 体验艺术般的控件

    崇拜下鸿洋大神,原文地址:http://blog.csdn.net/lmj623565791/article/details/45059587 概述 RecyclerView出现已经有一段时间了,相信 ...

  6. [转载]mysqlcreate新建用户host使用%,本地无法连接原因及解决方法

    转载自 http://www.2cto.com/database/201307/225781.html mysql,因为root权限过高,所以新建一用户appadmin,权限仅为要用到的数据库.创建语 ...

  7. (转载)VC/MFC 工具栏上动态添加组合框等控件的方法

    引言 工具条作为大多数标准的Windows应用程序的 一个重要组成部分,使其成为促进人机界面友好的一个重要工具.通过工具条极大方便了用户对程序的操作,但是在由Microsoft Visual C++开 ...

  8. 转载:Android RecyclerView 使用完全解析 体验艺术般的控件

    转自:https://blog.csdn.net/lmj623565791/article/details/45059587

  9. 转载: 开源整理:Android App新手指引开源控件

    http://blog.coderclock.com/2017/05/22/android/open-source-android-app-guide-view-library/ 开源整理:Andro ...

随机推荐

  1. 自动化运维工具 SaltStack 在云计算环境中的实践

    http://www.talkwithtrend.com/Article/218473

  2. HiveThrift

    Hive具有一个可选的组件叫HiveServer或HiveThrift,其允许通过指定端口访问Hive.Thrift是一种软件架构,用于跨语言的服务开发. hive最常用的访问方式是采用cli访问,不 ...

  3. RAD 10.1多标签页bug

    frm->Parent= ActiveControl取不到了 ::setparent(frm-> 多屏幕显示器,次副屏幕上无法最大化了. ::SetParent(myform->Ha ...

  4. xe Style

    //注意引用:vcl.themes, vcl.styles, IOutils procedure TForm1.FormCreate(Sender: TObject); var stylename: ...

  5. Spring DevTools 介绍

    Spring DevTools 介绍 Spring Boot包括一组额外的工具,可以使应用程序开发体验更加愉快. spring-boot-devtools模块可以包含在任何项目中,它可以节省大量的时间 ...

  6. 浅谈RMI的特点及作用

    RMI:远程方法调用(Remote Method Invocation) 扩展:RPC与RMI的区别 1:方法调用方式不同: RMI中是通过在客户端的Stub对象作为远程接口进行远程方法的调用.每个远 ...

  7. Spring MVC 数据绑定流程

    DataBinder 数据绑定 入参,校验,格式化, ConversionService: 进行数据类型转换和数据格式化 Validators 进行数据合法性的校验, 把结果放入BindingResu ...

  8. DateJsonValueProcessor日期处理

    package com.zjx.controller; import java.text.SimpleDateFormat; import net.sf.json.JsonConfig; import ...

  9. mesos无执行器启动docker

    生成taskInfo task = mesos_pb2.TaskInfo() task_id = name task.task_id.value = task_id task.slave_id.val ...

  10. debug-stripped.ap_' specified for property 'resourceFile' does not exist.(转载)

    1.错误描述 更新Android Studio到2.0版本后,出现了编译失败的问题,我clean project然后重新编译还是出现抑郁的问题,问题具体描述如下所示: Error:A problem ...