如何在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中使标签页无法访问的主要内容,如果未能解决你的问题,请参考以下文章
WPF自适应可关闭的TabControl 类似浏览器的标签页
Flutter:无法或更改 TabController 的选项卡之间滑动的敏感性