我想做成卡巴斯基、nod32、GHOST 2003等那样的界面,就是左边一些按钮,右边是tabcontrol控件。当我点击左边一个按钮时,右边显示tabcontrol的一页,且这一页的标签要隐藏,就是说把原来用标签换页的方式改为用按钮事件代码实现,请问如何实现。
注意:只是隐藏标签,并不是清除一页,有些人数用tabcontrol_order.TabPages.Remove(TabPage_name)是断不可取的,不是这个意思。

解决方案 »

  1.   

    多 tabpage 的可见性好似只有那个 remove 的办法
    remove 是从 tabcontrol 中去除, tabpage 还在的, 还可以再次加进去你的方式其实也可以使用多个 panel 在右边来实现
    根据左边的选择, 来决定右边哪个panel 可见并且Dock.fill
      

  2.   

    自己写一个控件,控件组合多个panel或其它的container控件,然后公布方法或事件出来,一切搞定;
      

  3.   

    为什么不用MDI或者SplitContainer
      

  4.   

    选中用:tabControl1.SelectedIndex = 3;
    隐藏标签可以考虑将其标签大小设置为0或最小
      

  5.   

    请问三楼,我用panel的话,好几个重叠在一起,我怎么在每一个panel里布置控件啊?难道先把其他的拖开不成。怎么显示某一个panel及其内容呢?
      

  6.   

    哎,上面我回复错了,不好意思,不是这个帖子的。其实lz这个问题,可以用panel+form来实现啊。
    每页定义成一个form(toplevel设置成false)
    点每个按钮的时候先清除panel内的所有control,然后再增加相应的form就行了。
      

  7.   

    教你一个很简单的办法,画一个panel,把tabcontrol放进去,填满,四边矛定,然后把tabcontrol的location设置成负的,直到上面的标签被panel的边框挡住为止
      

  8.   


    public class TabSwitch : TabControl
        {
            public TabSwitch()
                : base()
            {
            }        public override Rectangle DisplayRectangle
            {
                get
                {
                    if (!DesignMode)
                        return ClientRectangle;
                    else
                        return base.DisplayRectangle;
                }
            }
        }
      

  9.   


    Apperarance 属性:Faltbuttons
    SizeMode属性:Fixed
    各个TabPage的Text :空
    ItemSize : Width=0;Height=1;//Height好象不能设为0,但也就那么一丁点儿,不影响吧厉害吧~~给分吧~~~
      

  10.   

    最简单的方案:
    假定你的tabControl有三页
    0。                tabPageProductsResource
    1。                tabPageProductsInformation
    2。                tabPageFormatFolders如果你想点击某个button显示一个页另外两个隐藏, 首先判断你要显示的页存在否,不存在则Add.
    这里用到了Controls.Contains().....先要做的工作,在form的 InitializeComponent()函数中, 先把tabcontrol中的三页隐藏(即Remove掉)
    0。                tabPageProductsResource
    1。                tabPageProductsInformation
    2。                tabPageFormatFolders方法是  把下面三行注释掉:
       this.tabControlLayoutRight.Controls.Add(this.tabPageProductsResource);
                this.tabControlLayoutRight.Controls.Add(this.tabPageProductsInformation);
                this.tabControlLayoutRight.Controls.Add(this.tabPageFormatFolders);这三行在C# 的form.Design.cs中,用Notepad中打开,VS IDE中不能打开,因为Microsoft不建议自已修改设计器源码。这样,在窗口打开时,所有的页都不显示,用户点击button控制tab页的显示。如果你想默认某tab页显示,就不要注释相应的行。
    下面提button点击事件示例。
    private void buttonFormatFolder_Click(object sender, EventArgs e)
    {
                   
     if (!this.tabControlLayoutRight.Controls.Contains(this.tabPageFormatFolders))
      {
         this.tabControlLayoutRight.Controls.Add(this.tabPageFormatFolders);
       }
    if (this.tabControlLayoutRight.Controls.Contains(this.tabPageProductsResource))
    {
      this.tabControlLayoutRight.Controls.Remove(this.tabPageProductsResource);
      this.tabControlLayoutRight.Controls.Remove(this.tabPageProductsInformation);
     }
    }