C# 尝试清除面板中所有彩色标签时出错
我想清除面板中的所有对象,除了我的绿色按钮和分数标签。换句话说,我想清除所有的红色和蓝色标签。但当我尝试使用foreach时,没有正常工作(只清理了一半标签) 这是我的密码,我不知道这里出了什么问题C# 尝试清除面板中所有彩色标签时出错,c#,visual-studio,winforms,C#,Visual Studio,Winforms,我想清除面板中的所有对象,除了我的绿色按钮和分数标签。换句话说,我想清除所有的红色和蓝色标签。但当我尝试使用foreach时,没有正常工作(只清理了一半标签) 这是我的密码,我不知道这里出了什么问题 foreach (Control coloredLable in panel1.Controls) { if (coloredLable is Label && coloredLable.Text == "") { if (status
foreach (Control coloredLable in panel1.Controls)
{
if (coloredLable is Label && coloredLable.Text == "")
{
if (status == false){
panel1.Controls.Remove(coloredLable);
}
}
}
我已经确保我所有的彩色标签里面没有任何文字,但它仍然不能正常工作。有人能告诉我这里出了什么问题吗?您只是错过了在删除后调用dispose方法以释放控件使用的所有资源的操作:
panel1.Dispose();
您可以参考以下代码删除面板中不必要的标签
private void button1_Click(object sender, EventArgs e)
{
var controls = panel1.Controls;
for (int i = 0; i < controls.Count; i++)
{
if (controls[i] is Label&&controls[i].BackColor!=Color.Green&&controls[i].Text=="")
{
panel1.Controls.Remove(controls[i]);
i--;
}
}
}
private void按钮1\u单击(对象发送者,事件参数e)
{
var控制=面板1.控制;
for(int i=0;i
结果:
错误是什么?有时只清除左侧标签,有时只清除右侧标签(不是全部)。什么是
状态
?您如何设置状态
显示了如何正确执行此操作。这个问题是关于一个你还没有发现的bug,你必须使用Dispose()而不是Remove()。嗯,我不想移除面板,我只想移除面板内的彩色标签对不起,那应该是你的面板按钮。