首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2013-04-20 
c# 动态删除空间碰到 一个奇怪的问题这些 控件都在 panelPic 中代码为如上时:textBoxPic3textBoxLink3这两

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


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

热点排行