在c#中如何删除动态生成的控件??

2024-12-31 09:14:11
推荐回答(4个)
回答1:

用control的remove方法,前提条件你要找到他的某一特征,不管是名字还是id还是上面显示的文本,确保你要查到他。
我打个比方他在form1的panel1里面,我不知道他叫什么名字,但是知道他上面显示的是“加载”,现在我要移除他:
foreach(control ctl in this.panel1.controls) //遍历panel1中所有控件
{
if(ctl is button)//挑选出是按钮类型的
{
if(ctl.text=="加载") //挑选出上面显示是“加载”的按钮
{
this.panel1.controls.remove(ctl); //移除他
}
}
}

回答2:

首先你要在代码外面保存你new过的所有控件 比如保存在一个List ctrls中

删除的时候这么写
foreach(Control i in ctrls)
{
this.Control.Remove(i);
i.Dispose();
}

回答3:

  1. 单击button1在panel上动态新建了多个label,现在想要点击选择某个动态新建的label,按button2,可以把这个label删掉
    在button1_Click事件中,创建label,代码:

  2. Label lb1 = new Label();
     lb1.Name = "panel"+j;
     lb1.BackColor = Color.Transparent;
     lb1.BorderStyle = BorderStyle.FixedSingle;
     Panel1.Controls.Add(lb1);

  3. 为这些label增加Click事件

  4.     Label lb1 = new Label();
      lb1.Name = "panel"+j;
      lb1.BackColor = Color.Transparent;
     lb1.Click += new EventHandler(label_Click);
      lb1.BorderStyle = BorderStyle.FixedSingle;
    Panel1.Controls.Add(lb1);
    string name = "";
    private void label_Click(object sender, EventArgs e)
    {
        Label lbl = sender as Label;
        name = lbl.Name;
    }

  5. 然后在Button2的Click中:


private void button2_Click(object sender, EventArgs e)
{
    Label lbl = Panel1.Controls[name];
    if(lbl != null)
        Panel1.Controls.Remove(lbl);
}

回答4:

this.Control.Remove(控件的对象);