如何隐藏选项卡控件中的选项卡页面

时间:2014-02-06 05:16:59

标签: tabcontrol

我在c#学习,我有一点疑问。

在我的Windows窗体页面中,我有一个tabControl包含3个tabPages。我在tabControl外面还有一个comboBox,其中3个项目列出了标签页的名称。

我想要做的是从comboBox中选择第一个tabPage的名称,并且只有隐藏其他tabPages才能显示该tabPage。

可见性属性不适用于tabPages。那我怎么能这样做呢?

提前致谢。

1 个答案:

答案 0 :(得分:1)

根据Hiding and Showing Tabpages in a Tabcontrol by Debasmit Samal

Tabibility上没有实现Visibility属性,也没有Insert方法。关于此

的一些解决方法
private void HideTabPage(TabPage tp)
{
    if (tabControl1.TabPages.Contains(tp))
        tabControl1.TabPages.Remove(tp);
}


private void ShowTabPage(TabPage tp)
{
    ShowTabPage(tp, tabControl1.TabPages.Count);
}


private void ShowTabPage(TabPage tp , int index)
{
    if (tabControl1.TabPages.Contains(tp)) return;
    InsertTabPage(tp, index);
}


private void InsertTabPage(TabPage tabpage, int index)
{
    if (index < 0 || index > tabControl1.TabCount)
        throw new ArgumentException("Index out of Range.");
    tabControl1.TabPages.Add(tabpage);
    if (index < tabControl1.TabCount - 1)
        do 
        {
            SwapTabPages(tabpage, (tabControl1.TabPages[tabControl1.TabPages.IndexOf(tabpage) - 1]));
        }
        while (tabControl1.TabPages.IndexOf(tabpage) != index);
    tabControl1.SelectedTab = tabpage;
}


private void SwapTabPages(TabPage tp1, TabPage tp2)
{
    if (tabControl1.TabPages.Contains(tp1) == false || tabControl1.TabPages.Contains(tp2) == false)
        throw new ArgumentException("TabPages must be in the TabControls TabPageCollection.");

    int Index1 = tabControl1.TabPages.IndexOf(tp1);
    int Index2 = tabControl1.TabPages.IndexOf(tp2);
    tabControl1.TabPages[Index1] = tp2;
    tabControl1.TabPages[Index2] = tp1;

    //Uncomment the following section to overcome bugs in the Compact Framework
    //tabControl1.SelectedIndex = tabControl1.SelectedIndex; 
    //string tp1Text, tp2Text;
    //tp1Text = tp1.Text;
    //tp2Text = tp2.Text;
    //tp1.Text=tp2Text;
    //tp2.Text=tp1Text;

}