c# 动态删除空间碰到 一个奇怪的问题
这些 控件都在 panelPic 中
代码为如上时: textBoxPic3 textBoxLink3 这两个 textbox 控件都删除了,但 labelPicIndex3 还存在
foreach (Control con in panelPic.Controls)
{
if (con.Name == "labelPicIndex3")
{
panelPic.Controls.Remove(con);
con.Dispose();
}
if (con.Name == "textBoxPic3")
{
panelPic.Controls.Remove(con);
}
if (con.Name == "textBoxLink3")
{
panelPic.Controls.Remove(con);
}
}
代码为如下时: labelPicIndex3 才被移除
foreach (Control con in panelPic.Controls)
{
if (con.Name == "labelPicIndex3")
{
panelPic.Controls.Remove(con);
con.Dispose();
}
}
不知道为啥为这样,谢谢
[解决办法]
foreach + Remove 哪看来的?
你正在遍历panelPic.Controls,结果你改变了panelPic.Controls的内容,当然会出问题
[解决办法]
List<string> list = new List<string>();
list.Add("labelPicIndex3");
list.Add("textBoxPic3");
list.Add("textBoxLink3");
foreach (string control in list)
{
ControlRemove(control);
}
private void ControlRemove(string ctrlName)
{
Control ctrl = panelPic.Controls.Cast<Control>().ToList().Find(item => item.Name == ctrlName);
if (ctrl != null)
panelPic.Controls.Remove(ctrl);
}