2013-04-20 34 views

回答

0

参考临客:MSDN Add And Remove Tab From Tabcontrol

// Removes the selected tab: 
tabControl1.TabPages.Remove(tabControl1.SelectedTab); 
// Removes all the tabs: 
tabControl1.TabPages.Clear(); 

,如果你想通过指数

tabControl1.TabPages.RemoveAt(i); 

使用标签页数组,它是所有的TabPages的集合中删除选项卡,通过TabControl.SelecetedIndex在TabPage的阵列搜索,找到删除后TabPage的索引,然后你可以做任何事情,这意味着你只需从TabControl中删除Tabpage,而不是从TabPage数组,当需要其中一个在TabControl中搜索时,可以通过设置Tag将Selected Tabpage与Tabpage数组关联起来属性到数组的实数索引。 使用这2个功能:

TabPage[] tabPages; 
private void MyForm_Load(object sender, EventArgs e) 
{ 
     tabPages = new TabPage[tabServices.TabPages.Count]; 
     for (int i = 0; i < tabServices.TabPages.Count; i++) 
     { 
      tabServices.TabPages[i].Tag=i;//for relation between TabControl and Array 
      tabPages[i] = tabServices.TabPages[i]; 
     } 
} 

private int GetTabIndex(TabPage pg) 
    { 
     return int.Parse(tabServices.TabPages[tabServices.SelectedIndex].Tag.ToString()); 
    } 


    private TABPAGE GetTABPAGE(TabPage pg) 
    { 
     return (TABPAGE)int.Parse(tabServices.TabPages[tabServices.SelectedIndex].Tag.ToString()); 
    } 

    private void tabServices_SelectedIndexChanged(object sender, EventArgs e) 
    { 
      switch (GetTABPAGE(tabServices.TabPages[tabServices.SelectedIndex])) 
      { 
       case TABPAGE.TabP1: 
        //Do Works; 
        break; 
       case TABPAGE.TabP2: 
        //Do Works; 
        break; 
       case TABPAGE.TabP3: 
        //Do Works; 
        break; 
       case TABPAGE.TabP4: 
         //Do Works; 
        break; 
      } 
    } 

,并定义枚举了所有的TabPages(用于可读性和索引标签页的名称):

public enum TABPAGE { TabP1 = 0, TabP2 = 1, TabP3 = 2}; 
+0

谢谢,mojtaba,但我真正需要的是一种方法,一旦标签已被删除,重新排序标签。删除标签后,其余标签必须重新编号以消除间隙。如果我有5个选项卡,并删除Tab 3,我想重新排列其余选项卡,以便它们被编号为Tab 1,Tab 2,Tab 3和Tab 4.换句话说,Tab 4变成了Tab 3,Tab 5变成Tab 4等 – user2272380 2013-04-21 19:13:01

+0

Tabcontrol数组索引改变后自动移除Tab,你的意思是什么? – mojtaba 2013-04-22 17:40:37

+0

mojtaba,你最接近理解我在说什么。如果选项卡控件的数组索引自动更改,我如何重命名选项卡以反映此? – user2272380 2013-05-29 22:27:11

相关问题