首先。我动态添加了标签。我想在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();
在我再次创建它们之前(没有重复/重叠)。
答案 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);