c#从表单中动态删除选定的标签

时间:2014-10-06 22:24:41

标签: c# controls labels

首先。我动态添加了标签。我想在button_Click之后动态删除这些标签,但我在MainForm上有很多标签,我想只删除调用 labelWorker 的标签。 我试过这样的事(例子):

List<Control> controlsToRemove = new List<Control>();

foreach (Control ctrl in this.Controls)
{
    if (ctrl is Label)
    {
        controlsToRemove.Add(ctrl);
    }
}

foreach (Control ctrl in controlsToRemove)
{
    this.Controls.Remove(ctrl);
}

但这是为了删除WinForm中的所有标签。如何仅删除:

Label labelWorker = new Label();

在我再次创建它们之前(没有重复/重叠)。

3 个答案:

答案 0 :(得分:3)

您应该为您的标签命名

Label labelWorker = new Label();
labelWorker.Name = "labelWorker";

然后您可以通过它的名称轻松访问它并删除

var labelToRemove = this.Controls["labelWorker"];
this.Controls.Remove(labelToRemove);

当然,你可以申请这个多个标签。只要确保他们有一些不合法的东西(比如名字中的前缀),你就可以区分它们。

答案 1 :(得分:2)

创建labelWorker时,请为其标识一个标记值。然后:

if (ctrl is Label && ((Label)ctrl).Tag.ToString() == "somevalue") controlsToRemove.Add(ctrl);

答案 2 :(得分:0)

var dynamicLabels = this.Controls.OfType<Label>().Where(c => c.Tag != null && c.Tag.ToString() == "Dynamic").ToList();
foreach(var lbl in dynamicLabels)
    this.Controls.Remove(lbl);            
相关问题