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();
在我再次创建它们之前(没有重复/重叠)。
您应该为标签命名
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);