求解:WINFORM中的TabControl如何使其中的某個Tab無效(即不允許選中)?

解决方案 »

  1.   

    在如下的事件中可以通过e.Cancel来达到要求:private void tabControl1_Deselecting(object sender, TabControlCancelEventArgs e)
    {
    e.Cancel = true;
    }
      

  2.   

    TabControl.Deselecting 事件 
    注意:此事件在 .NET Framework 2.0 版中是新增的
      

  3.   

    我是在net 1.1下,
    我的问题修改一下:WINFORM中的TabControl如何使其中的某個Tab有效(即不允許選中),其余的使之无效?
      

  4.   

    试试这样:
    private void tabControl1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    if (this.tabControl1.SelectedTab!=tabPage2)
    {
    this.tabControl1.SelectedTab=tabPage2;
    }
    }
      

  5.   

    我的想法是 把不用的都保存起来 然后需要的时候再显示出来
    通过add 和 remove 方法实现例如
    private void Form2_Load(object sender, System.EventArgs e)
    {
    mtabp = new TabPage();
    mtabp = this.tabControl1.TabPages[1];
    this.tabControl1.TabPages.RemoveAt(1);
    }private void button1_Click(object sender, System.EventArgs e)
    {
    this.tabControl1.TabPages.Add(mtabp);
    }
      

  6.   

    试试这样:
    private void tabControl1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    if (this.tabControl1.SelectedTab!=tabPage2)
    {
    this.tabControl1.SelectedTab=tabPage2;
    }
    }
    这个方法,可以行通。但误选别的tabpage时会闪一闪的。我再试试“jiatong1981(末日之痕) ”的~
      

  7.   

    继承是最好的方法,把事件链咔嚓掉。不过我觉得既然不允许选中,为何要存在呢?应该考虑把这个page移出。
    比如你设置多种tabcontrol的方案。即把page的加载延迟到formload的时候。
      

  8.   

    我的原意是:通过点[菜单]的子选项,从而列出该子菜单的tabpage,其余的tabpage不显示或者是成灰色的(不能选中的状态)。
      

  9.   

    楼主的这个问题在1.1中是不不足,只能通过一些变通的方法来实现.由于这个原因在2.0里已对这个问题有了解决的方法,就是通过事件Deselecting来达到这个目的.
      

  10.   

    和TabControl.Selecting 事件也是2.0中新增的.在2.0也可以用这个方法.但1.1中只能是变通了.
      

  11.   

    谢谢,
    jiatong1981(末日之痕) 你说的方法,因为我已经在tabControl属性中添加了8个tabpage,所以没有再用mtabp = new TabPage();
    mtabp = this.tabControl1.TabPages[1];赋值:
    但当我不停的点某个子菜单,会不停的增加同一个tabpage啊!而且,tabpage的内容为空
      

  12.   

    呵呵,看了很多关于这个问题的解决方法,我现在采取用空百lable来隐藏别的tabpage,希望大家以后能找到更好的方法替代。
    非常感谢大家
      

  13.   

    看来你没理解意思哦就是用mtabp来存储你在代码设计器里设计好的tabpage啊以便在removeat后可以恢复