/*   删除TabPages  上的控件 */ for (int i=0;i<roleTabControl.Controls.Count;i++)
{
this.roleTabControl.Controls.RemoveAt(i);
}

        /* 删除 TabControl 上的控件 */
for (int i=0;i<roleTabControl.TabPages.Count;i++)
{
roleTabControl.TabPages[i].Select();
roleTabControl.TabPages.RemoveAt(i);
}当 tabpage多于4个的时候,好像删除不干净。我的tabpage是动态添加的。点击某个功能按钮时,需要删除 tabControl 上的所有控件,但是好像删除不干净,希望那位好心人指点一下迷津。

解决方案 »

  1.   

    确实是这样 ,用clear 就可以了 谢谢。能给我讲一下,为什么用 remove ,或者removeat 不行呢。
      

  2.   

    to 当 tabpage多于4个的时候,好像删除不干净。我的tabpage是动态添加的。点击某个功能按钮时,需要删除 tabControl 上的所有控件,但是好像删除不干净,希望那位好心人指点一下迷津。首先你的control是加载在哪里,是tab中,还是tabpage中。
    如果是tabpage中,那么你的第一个循环就不对了。
      

  3.   

    不是删除不干净,是你这么做就有问题。for (int i=0;i<roleTabControl.TabPages.Count;i++)
    {
       roleTabControl.TabPages[i].Select();
       roleTabControl.TabPages.RemoveAt(i);
    }在循环里删除,每删除一个元素,这个集合的Count也发生改变。
    roleTabControl.TabPages.Count 在变化!将导致你这段程序数组越界。
      

  4.   

    to :fangxinggood(JustACoder) 
      言之有理
      

  5.   

    循环删除数组要这么做:
    /*   删除TabPages  上的控件 */for (int i=roleTabControl.Controls.Count - 1; i >= 0; --i)
    {
    this.roleTabControl.Controls.RemoveAt(i);
    }