删除选项卡后,如何以编程方式重新排序tabcontrol中的选项卡?

时间:2013-04-20 22:25:30

标签: function tabs tabcontrol

情况: 我正在编写一个程序,用户单击按钮在TabControl中创建选项卡。用户创建了5个选项卡,然后想要删除选项卡3.这将留下选项卡1,2,4和5.

如何重新排序标签以填补空白(标签4成为新标签3,标签5变为标签4等)? TabControl是否具有内置函数?

1 个答案:

答案 0 :(得分:0)

参考linke: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);

使用Tabpage数组,它是所有标签页的集合,通过TabControl.SelecetedIndex在TabPage数组中搜索,找到删除后的TabPage索引然后你可以做任何事情这意味着你只是从TabControl删除Tabpage,而不是从TabPage数组中删除Tabpage当需要其中一个在TabControl中搜索时,您可以通过将Tag Property设置为Array的Real Index来将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定义一个Enum(对于ReadAbility和Index to Tabpage有意义的名称):

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