如何清除 Winforms 中所有已初始化(带代码)标签 类?
How to clear all initialized (with code) label classes in Winforms?
我的代码遍历文件夹中的所有文件,然后为它们制作标签。不过,在此之前,您需要使用 FolderBrowserDialog
打开文件夹。我想这样做:当程序中打开文件夹 ALREADY 时,我可以清除所有这些标签,以便为新一批标签腾出空间。
代码:
foreach(string song in files)
{
Label songLab = new Label();
songLab.Padding = new Padding(6);
songLab.AutoSize = true;
songLab.Location = new Point(prevX + 10, prevY + 20);
songLab.Click += (o, e2) =>
{
MessageBox.Show("You Clicked " + songLab.Text);
};
songLab.MouseEnter += (o, e3) =>
{
Cursor = Cursors.Hand;
songLab.ForeColor = Color.Red;
};
songLab.MouseLeave += (o, e4) =>
{
Cursor = Cursors.Default;
songLab.ForeColor = Color.Black;
};
Controls.Add(songLab);
int fileExtPos = song.LastIndexOf(".");
var songFixd = song.Substring(0, fileExtPos);
prevY += 20;
songLab.Text += songFixd + "\n";
}
```
最简单的方法可能是保留一个单独的标签列表:
myLabels.Add(songLab);
Controls.Add(songLab);
然后你可以遍历它并删除标签:
foreach(var label in myLabels){
Controls.Remove(label);
}
但是,听起来您正在做类似 listview or datagrid 的事情。使用这些可能比手动添加标签更好。您还可以考虑使用完全自定义的控件,您可以在其中自行管理所有绘图和事件处理,而不是依赖现有控件。
我认为您应该使用 groupbox
(或类似的控件)。像这样将标签添加到 groupbox
:
groupBox1.Controls.Add(songLab);
并在像这样批量删除时从 groupbox
中删除:
groupBox1.Controls.Clear();
我的代码遍历文件夹中的所有文件,然后为它们制作标签。不过,在此之前,您需要使用 FolderBrowserDialog
打开文件夹。我想这样做:当程序中打开文件夹 ALREADY 时,我可以清除所有这些标签,以便为新一批标签腾出空间。
代码:
foreach(string song in files)
{
Label songLab = new Label();
songLab.Padding = new Padding(6);
songLab.AutoSize = true;
songLab.Location = new Point(prevX + 10, prevY + 20);
songLab.Click += (o, e2) =>
{
MessageBox.Show("You Clicked " + songLab.Text);
};
songLab.MouseEnter += (o, e3) =>
{
Cursor = Cursors.Hand;
songLab.ForeColor = Color.Red;
};
songLab.MouseLeave += (o, e4) =>
{
Cursor = Cursors.Default;
songLab.ForeColor = Color.Black;
};
Controls.Add(songLab);
int fileExtPos = song.LastIndexOf(".");
var songFixd = song.Substring(0, fileExtPos);
prevY += 20;
songLab.Text += songFixd + "\n";
}
```
最简单的方法可能是保留一个单独的标签列表:
myLabels.Add(songLab);
Controls.Add(songLab);
然后你可以遍历它并删除标签:
foreach(var label in myLabels){
Controls.Remove(label);
}
但是,听起来您正在做类似 listview or datagrid 的事情。使用这些可能比手动添加标签更好。您还可以考虑使用完全自定义的控件,您可以在其中自行管理所有绘图和事件处理,而不是依赖现有控件。
我认为您应该使用 groupbox
(或类似的控件)。像这样将标签添加到 groupbox
:
groupBox1.Controls.Add(songLab);
并在像这样批量删除时从 groupbox
中删除:
groupBox1.Controls.Clear();