如何在tabcontrol中使标签页无法访问

Posted

技术标签:

【中文标题】如何在tabcontrol中使标签页无法访问【英文标题】:how to make a tabpage inaccessible in tabcontrol 【发布时间】:2012-07-20 15:41:51 【问题描述】:

我目前有一个带有 3 个标签页的 tabcontrol(我们称它们为 A、B 和 C)问题是我希望用户只能单击某些标签(如果在 tabA 上,则只能导航到 tabB,如果在 tabC 上只能导航到 tabA...) 有没有办法做到这一点?我有点难过,感谢任何帮助!

--C#2.0 --Windows Visual Studio 2005

【问题讨论】:

【参考方案1】:

您可以连接到 TabControl 上的 Selecting 事件,在事件处理程序内部,您可以检查一些类变量,指定允许单击哪些选项卡。如果您选择的与变量不匹配,您可以取消该事件。

【讨论】:

我只是好奇我使用什么变量来禁用页面.. 下面有人建议 tabpageA.enabled=true;等等..但我使用的是 C#2.0 所以 .enabled 是不可能的。建议? 我的建议是保留一些类级别的变量,例如一个字符串,因此在您的 Selecting 处理程序中,您可以说“正在选择的选项卡是否等于变量中的选项卡名称...否?然后是 canel 事件”【参考方案2】:

为了控制一次可以导航到哪个TabPages,您可以使用TabPage 上的Enabled 属性。将其设置为 false 以防止任何用户与其交互。

为了根据打开的选项卡动态决定启用哪些选项卡,您可以在TabControl 上使用Selected 事件(详细信息:http://msdn.microsoft.com/en-us/library/system.windows.forms.tabcontrol.selected.aspx)。每当您更改 TabControl 上的当前选项卡时,都会触发此操作。在这里,您可以确定当前的TabPage 是什么,然后根据需要使用它来启用或禁用TabPages

【讨论】:

您不想处理 Selected 事件,因为它仅在选择选项卡后才会触发。 OP 希望通过 Selecting 事件阻止选择选项卡,这必须在选择选项卡时完成【参考方案3】:

为TabControl.Selecting 事件添加一个处理程序以检查您是否要允许标签页选择。

【讨论】:

【参考方案4】:

可能是这样的

If (SelectedIndex == 1) //tab a

    tabC.enabled = false;
    tabB.enabled = true;

【讨论】:

以上是关于如何在tabcontrol中使标签页无法访问的主要内容,如果未能解决你的问题,请参考以下文章

如何使标签页的宽度适合 TabControl 的宽度

WPF自适应可关闭的TabControl 类似浏览器的标签页

Flutter:无法或更改 TabController 的选项卡之间滑动的敏感性

WPF自适应可关闭的TabControl 类似浏览器的标签页(转)

chrome新标签页 无法访问此网站 连接已重置

在 tabControl 中隐藏和显示 TabPages