2 bbcc19880724 bbcc19880724 于 2017.01.13 16:04 提问

C#winform删除动态添加的多个控件 2C

动态添加了10个控件,如下:其中RandomSquare.Square是自定义控件,
RandomSquare.Square[] ns = new RandomSquare.Square[1000];
ns[0] = new RandomSquare.Square();
ns[0].Parent = tabPage_Database;
ns[0].Location = new Point(200,200);
ns[0].Size = new Size(50, 50);
tabPage_Database.Controls.Add(ns[0]);
for (int i=1;i<=9;i++)
{
ns[i]= new RandomSquare.Square();
ns[i].Parent = tabPage_Database;
ns[i].Size = new Size(50, 50);
ns[i].Location = new Point(ns[i - 1].Location.X + ns[i - 1].Width, ns[i - 1].Location.Y);
tabPage_Database.Controls.Add(ns[i]);
}
动态删除(例如点击一个btn)代码如下:
private void button3_Click(object sender, EventArgs e)
{
foreach (Control ns in tabPage_Database.Controls)
{
if (ns.GetType().ToString().Equals("RandomSquare.Square"))
{
tabPage_Database.Controls.Remove(ns);
}
}

}
点玩按钮后,控件删除总会剩下两个,这是为什么?
如图:
点击前:
图片说明
点击后:
图片说明

1个回答

caozhy
caozhy   Ds   Rxr 2017.01.14 00:30
 foreach (Control ns in tabPage_Database.Controls)
->
foreach (Control ns in tabPage_Database.Controls.Cast<Control>().ToList())
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C#WinFrom开发系列之关于动态添加生成和删除控件的相关知识
前段时间由于事情比较多,很长时间没有进行学习和知识的总结,几天有空刚好补上! 今天要讲的是怎样实现控件的动态生成和删除: 1.首先,我们创建一个新的窗体,使用一个panel控件(控件的Dock属性设置为top或Fill)作为整个容器,在该panel控件再创建一个panel控件(控件属性设置为Fill),然后在该控件内部拖入两个dateTimePicker控件和一个TextBox控件和两个lab
C#.NET中动态添加与删除控件
C#.NET中动态添加与删除控件        数组为共享公用功能的一组控件一起工作提供了便捷的途径。例如,一组控件可能用于显示相关的数据,或者在被点击时提供相关的行为。C#本身并不支持控件数组的建立,但是你可以通过编程复制控件数组的所有功能。本文介绍复制控件数组功能的简单组件的建立。 控件数组的主要用处有: 1,使用相同的名称与索引访问一组控件,允许用编号检索和设置数据项并且在整
C# winfrom在Panel下面动态添加空间
private void Form5_Load(object sender, EventArgs e)         {              for (int i = 0; i            {                TextBox b = new TextBox();              // Button b = new Button();
winform 程序 动态生成控件练习
自动生成i个控件,生成控件的个数不确定,最后程两列显示出来。 (辣个,算法神马的拿时间怼总能怼出来,不是最优,但可以显示出来。) //先查出来总个数,总个数的一半来求每个的高,窗体高度固定,根据总的高度计算   for (int i = 0; i < dt.Rows.Count; i++) { int heigh
VB 动态添加删除控件汇总
<br />1.    概述  <br /><br />在使用 Visual Basic  进行程序设计的过程中,如果能在运行时刻动态地创建和删除控件,可以极大地丰富界面的处理和变化。本人在设计网络监控系统时,需要在原理图与实物示意图间切换。切换的过程采用本文介绍控件的动态创建和删除来实现,有效地节省了系统资源,同时也有利于简化界面的维护。下面将就 Visual Basic 6.0 中的控件在运行时刻的创建和删除的两种方法——控件数组和控件集合作详细的阐述。<br /><br />2.    基于控件数组的
C#实现动态添加和删除控件
最近弄一个项目,需要动态添加控件和删除控件.原始界面如下:   如上图操作添加按钮,则下面自动增加一行GROUPBOX控件,操作删除则自动删除最后一行开始的BROUPBOX控件. 实现步骤如下: 1)定义一个记录行数的全局变量 public int watch_num = 0; 2)编写动态添加的代码 private void addWatchFrom(int _s
extjs动态添加或删除控件
背景:extjs 3.4 需求:添加或删除textarea 代码: var i =0; this.addButton= new Ext.Panel({ layout:'hbox', border:false, scope:this, items:[{ xtype:'button', text:'增加', handler:function(){ v
QT可动态添加、删除控件的小项目
QT实现的可动态添加、删除控件的小项目;当添加控件达占满widget时,自动添加滚动条效果,并提供了一个删除功能,删除你添加到widget里的控件。控件可以是任何的大小的QWidget.
C# WinForm 控件在窗体中动态居中 创建、删除控件及对其赋值
<br />    一、 以lable为例:<br /> <br />        在Form中放一个控件,让其在启动和动态改变窗口大小时始终居中<br /> <br />            int gLeft = this.Width / 2 - lable1.Width / 2; //this指Form<br />            int gTop = this.Height / 2 - lable1.Height / 2;<br />            lable1.Location
Html动态添加/删除控件
<!-- label {display:block;} --> 发布 另存 成果基本信息修改: 成果名:成果位置: 成果内容 some text. some text. some text... ... var textNumber = 0; function insertAfter(ne