这些 控件都在 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();
                }
                  
            }不知道为啥为这样,谢谢

解决方案 »

  1.   

    foreach + Remove 哪看来的?你正在遍历panelPic.Controls,结果你改变了panelPic.Controls的内容,当然会出问题
      

  2.   

                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);
            }用你的逻辑大概就这个意思,写的比较渣,将就着看。