VB.net禁用TabControl的TabPage

时间:2013-10-03 06:24:28

标签: vb.net winforms tabcontrol tabpage

我目前有一个使用TabControl的表单,其中有TabPages。我想创建一个可以禁用特定TabPage的按钮。

我试过了

TabPage1.Enabled = False

但它不起作用。我该怎么做?

4 个答案:

答案 0 :(得分:10)

您需要使用TabPages集合。在表单中添加一个按钮并尝试此

Private Sub Button1_Click( sender As Object,  e As EventArgs) Handles Button1.Click
        TabControl1.TabPages(0).Enabled =false
End Sub

它是一个基本零数组,所以在你的情况下它应该是0-4。

或者您可以从标签文本中访问它

Private Sub Button2_Click( sender As Object,  e As EventArgs) Handles Button2.Click
    Dim tabPage As TabPage

    For Each tabPage In TabControl1.TabPages
        If tabPage.Text ="TabPage2"
            tabPage.Enabled =False
        End If
    Next
End Sub

答案 1 :(得分:3)

目前,以下两个代码块执行相同的操作:禁用该TabPage上的所有控件(设置Control.Enabled = False)。选项卡本身仍然可见并可从TabControl中选择,它不会被隐藏。该选项卡是可选的,所有元素都显示为禁用。

TabMyTab.Enabled = False

MyTabControl.TabPages(4).Enabled = False其中TabPages(4)是TabControl集合中的第5个。

如果这是您的意图,您的初始代码应该有效。

如果要禁用与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

将自己的值替换为&#34; UnselectableTab&#34;和&#34; TabControlName&#34;为你的项目。

答案 2 :(得分:0)

您可以结合使用禁用选项卡的方式,如果您更改代码中启用或禁用了哪些选项卡,则行为是动态的。

Private Sub TabControl1_Deselected(sender As Object, e As TabControlEventArgs) Handles TabControl1.Deselected
    PreviousTab = e.TabPage
End Sub

Private Sub TabControl1_Selected(sender As Object, e As TabControlEventArgs) Handles TabControl1.Selected
    If Not e.TabPage.Enabled Then
        TabControl1.SelectedTab = PreviousTab
    End If
End Sub

答案 3 :(得分:0)

您可以通过设置其Enabled属性来禁用标签:

TabControl1.TabPages("tbPage1").Enabled = False