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

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

--C#2.0
--Windows Visual Studio 2005

【问题讨论】:

    标签: c# methods visual-studio-2005 c#-2.0 tabcontrol


    【解决方案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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-09
        • 2022-11-10
        • 2012-03-09
        • 2019-08-08
        • 1970-01-01
        • 1970-01-01
        • 2012-10-29
        • 1970-01-01
        相关资源
        最近更新 更多