1

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

如何重新排序选项卡以填补空白(选项卡 4 变为新的选项卡 3,选项卡 5 变为选项卡 4,等等)?TabControl 是否为此提供了内置功能?

4

1 回答 1

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);

使用一个包含所有标签页的 Tabpage 数组,通过 TabControl.SelecetedIndex 在 TabPage 数组中搜索,在删除后找到 TabPage 的索引,然后您可以执行任何操作,这意味着您只需从 TabControl 中删除 Tabpage,而不是从 TabPage Array 中删除以及在需要时其中之一在 TabControl 中搜索。您可以通过将标签属性设置为数组的实际索引,将选定的标签页与标签页数组相关联。使用这 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 定义一个枚举(用于 ReadAbility 和 Index to Tabpage 有意义的名称):

public enum TABPAGE { TabP1 = 0, TabP2 = 1, TabP3 = 2};
于 2013-04-21T09:25:16.097 回答