如何禁用选项卡?

时间:2016-01-19 13:38:25

标签: c# user-interface

我有一个标签控件,上面有几个标签,我想在检查另一个标签页上的单选按钮时禁用其中一个标签。我可以使用tab.Enabled = False禁用它上面的控件;但我想知道如何能够禁用整个页面甚至单击选项卡。我的方式我可以选择标签,只是它上面的控件是禁用。

1 个答案:

答案 0 :(得分:0)

没有本地方法只禁用一个选项卡,其余选项保持有效。您需要制作自己的TabControl并使用Selecting事件来检测某人何时即将进入您的标签并将其禁用。

这是一个非常基本的示例,阻止您输入tabindex 1。

// Make your own control deriving from TabControl
class CustomTabControl : TabControl
{
    // Subscribe to the Selecting event
    public CustomTabControl()
    {
        Selecting += tabSelecting;
    }

    private void tabSelecting(object sender, TabControlCancelEventArgs e)
    {
        // You would put your own logic here to detect which tabs to disable
        // For this example I'm disabling access to tab in index 1
        if (e.TabPageIndex == 1)
        {
            e.Cancel = true;
        }
    }
}

如果你希望标签变灰,你甚至需要覆盖DrawItem并自己绘制标签。如果我有代码,我会稍微更新我的答案。

编辑:似乎自定义绘图的示例很长,但这是我用来创建自己的标签的教程。

http://www.codeproject.com/Articles/91387/Painting-Your-Own-Tabs-Second-Edition