2013-04-20 80 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

相關問題