VB.Net隐藏Tab页

3
我在这里看到了一些关于如何隐藏TabControl中选项卡的讨论,但它们似乎都是基于C或其变体。我还没有看到过VB.net的(我不会写C)。
我想做的是在用户登录之前隐藏或禁用一些选项卡。我已经解决了登录和注销问题。现在,我只需要添加代码来启用/禁用一些选项卡,直到用户登录为止。
有人知道一个好方法吗?
WinForms 哦。
3个回答

9
您只需通过 TabPages 集合向 TabControl 添加和删除 TabPages 即可:
TabControl1.TabPages.Add(myTabPage)

并将其删除:
TabControl1.TabPages.Remove(myTabPage)

注意:移除一个TabPage并不会释放它,它只是从TabPage集合中移除而已。

这个方法不会失去选项卡上的所有控件吗? - Dr.Pepper
1
@user977229 不会。TabPage 仍将保留其所有控件和事件,直到被处理。 - LarsTech
这种方法的一个问题是,当您尝试将选项卡添加回选项卡控件时,它将被添加到末尾,而不是原来的位置。您可能希望跟踪选项卡页的位置,并使用InsertAt方法将其插入到正确的位置。 - Chris Dunaway
@ChrisDunaway 没错,但在OP的情况下,他似乎只需要一个标签页来登录,如果成功了,他就会删除这个标签页并放入应用程序的其余标签页。如果Microsoft能够为TagPage包括一个“Visible”属性,那就太好了。 - LarsTech
我不确定我理解你的意思。TabPages的Add方法将在末尾添加选项卡。所以在您的选项卡示例中(1,2,3,6,4),如果您删除选项卡3以隐藏它,如果稍后调用Add将其添加回来,则会将其添加到末尾(1,2,6,4,3)。我的意思是,在我的评论中,您必须自己跟踪正确的位置。 - Chris Dunaway
显示剩余5条评论

1

目前,以下代码块会禁用该TabPage上的所有控件(设置Control.Enabled = False)。选项卡本身仍然可见且可从TabControl中选择,它没有被隐藏。选项卡是可选的,所有元素看起来都已禁用。

TabMyTab.Enabled = False

如果您想禁用选项卡,类似于 i.e. button.Enabled = False,这将不允许使用控件,则需要执行不同的操作,因为在上面的代码中禁用 TabPage 将禁用该选项卡中的所有控件。如果这是您想要的,请继续阅读。许多程序员建议使用 TabControl 来禁止选择选项卡,通过选择不同或先前选择的选项卡。这是我知道的最有效的方法。我会按照以下方式实现:
Private PreviousTab As New TabPage
Private CurrentTab As New TabPage

Private Sub TabControlName_Deselected(ByVal sender As Object, ByVal e As System.Windows.Forms.TabControlEventArgs) Handles TabControlName.Deselected
        PreviousTab = e.TabPage
End Sub

Private Sub TabControlName_Selected(ByVal sender As Object, ByVal e As System.Windows.Forms.TabControlEventArgs) Handles TabControlName.Selected
        CurrentTab = e.TabPage
        If (PreviousTab.Name <> CurrentTab.Name) And (CurrentTab.Name = UnselectableTab.Name) Then
            MessageBox.Show("Tab disabled.", "Selection Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            TabControlName.SelectedTab = PreviousTab
        End If
End Sub

请为您的项目替换“UnselectableTab”和“TabControlName”的值。

0

通过设置其 Visible 属性,可以隐藏整个 TabControl。


抱歉 - 忘记提到登录是第一个选项卡。我知道这是一种混乱的方式,我可能会改变它,但我也想学习如何在任何未来的项目中做到这一点。 - Dr.Pepper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接