读书人

c# 动态删除空间碰到 一个奇怪的有关问

发布时间: 2013-04-20 19:43:01 作者: rapoo

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);
}


用你的逻辑大概就这个意思,写的比较渣,将就着看。

读书人网 >C#

热点推荐