禁用和隐藏TabPage

Aan*_*Aan 17 .net c# tabcontrol tabpage winforms

我怎么能TabPageTabControl可见/隐藏和启用/禁用?

Oti*_*iel 27

  • 启用/禁用

    tabPage.Enabled似乎是做工精细,但被标记为"未使用":

    此API支持.NET Framework基础结构,不能直接在您的代码中使用.
    该成员对此控件没有意义.

    因此,您应该通过禁用选项卡中的每个控件来禁用选项卡页面.例如,见这个.

  • 显示隐藏

    有一个现有的 tabPage.Visible财产,但似乎没有任何影响.此外,它还标记为"不使用",并且msdn建议从选项卡控件中删除选项卡页面以隐藏它:

    // Hide the tab page
    tabControl.TabPages.Remove(tabPage1);
    // Show the tab page (insert it to the correct position)
    tabControl.TabPages.Insert(0, tabPage1);
    
    Run Code Online (Sandbox Code Playgroud)


Joh*_* S. 6

我也有这个问题.tabPage.Visible未按前面所述实现,这是一个很好的帮助(+1).我发现你可以覆盖控件,这将起作用.有点necroposting,但我想在这里为别人发布我的解决方案......

    [System.ComponentModel.DesignerCategory("Code")]
public class MyTabPage : TabPage
{
    private TabControl _parent;
    private bool _isVisible;
    private int _index = int.MinValue;
    public new bool Visible
    {
        get { return _isVisible; }
        set
        {
            if (_parent == null) _parent = this.Parent as TabControl;
            if (_parent == null) return;

            if (_index < 0) _index = _parent.TabPages.IndexOf(this);
            if (value && !_parent.TabPages.Contains(this))
            {
                if (_index > 0 && _index < _parent.TabPages.Count) _parent.TabPages.Insert(_index, this);
                else _parent.TabPages.Add(this);
            }
            else if (!value && _parent.TabPages.Contains(this)) _parent.TabPages.Remove(this);

            _isVisible = value;
            base.Visible = value;
        }
    }

    protected override void InitLayout()
    {
        base.InitLayout();
        _parent = Parent as TabControl;
    }
}
Run Code Online (Sandbox Code Playgroud)


Bug*_*der 5

您可能会错过显而易见的事实,因为以下任何一项都不会删除/更改选项卡的外观

        tabPage1.Enabled = false; // this disables the controls on it
        tabPage1.Visible = false; // this hides the controls on it.
Run Code Online (Sandbox Code Playgroud)

不要从顶部的列表中删除选项卡.

  • 据我所知,TabPage没有Enabled和Visible属性 (14认同)
  • 在框架4中,C#winforms没有这样的属性,我已经检查过了,相信我.也许在ASP.NET? (9认同)
  • 刚刚测试了自己(VS 2010/.NET 4.0),它也没有错误地构建.但这些属性并非由Intellisense提出(奇怪).`Enabled`属性有效,但不是`Visible`属性. (8认同)
  • @BugFinder:我想知道你使用的是哪个.NET Framework版本.根据[msdn](http://msdn.microsoft.com/en-us/library/system.windows.forms.tabpage_properties.aspx),`Enabled`和`Visible`属性是:"*Infrastructure.这成员对此控件没有意义.*" (3认同)

小智 5

//Move&Add is not good answer   
this.tabPage1.Parent = null; // hide    
this.tabPage1.Parent = this.tabControl1; //show
Run Code Online (Sandbox Code Playgroud)