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

本文关键字:标签 删除 动态 表单 | 更新日期: 2023-09-27 18:25:48

首先。我已经动态添加了标签。我想在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();

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

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

您应该为标签命名

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

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

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

当然,您可以应用多个标签。只要确保它们有一些不相干的东西(比如名字中的前缀),这样你就可以区分它们。

创建labelWorker时,给它一个Tag值来识别它们。然后:

if (ctrl is Label && ((Label)ctrl).Tag.ToString() == "somevalue") controlsToRemove.Add(ctrl);
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);