防止用户在标签页之间导航

问题描述

我创建了一个 tabControl 和 TABpages,我想阻止用户在它们之间导航。我还希望菜单可见,并且用户从 tabcontrol 中选择它时无法访问标签页。

我尝试使用删除添加,但在这种情况下,菜单消失,只有我所在的选项卡出现。我尝试将 enabled 属性设置为 false,在这种情况下,用户可以访问标签页,但没有出现任何我不想发生的情况。

我尝试了带有 tabcontrol_selecting 事件的 e.cancel 并且它起作用并且其他标签被锁定,但是当我尝试使用代码标签页之间导航时它不起作用。其实在第一页上有一个登录界面,当参数正确时,应该会带我到第二个标签页,但没有发生这种情况。

我想知道我做错了什么。

这是从登录选项卡转到第二个选项卡的代码

Private Sub Enter_Click(sender As Object,e As EventArgs) Handles Enter.Click
        If Usersel.Selectedindex = 0 And Password.Text = "0000" Then
            TabControl.Selectedindex = 1
        End If


这是选择事件

Private Sub TabControl_Selecting(sender As Object,e As TabControlCancelEventArgs) Handles TabControl.Selecting,TabControl.SelectedindexChanged

        e.Cancel = False

            Dim messageBoxVB As New System.Text.StringBuilder()
            messageBoxVB.AppendFormat("{0} = {1}","TabPage",e.TabPage)
            messageBoxVB.AppendLine()
            messageBoxVB.AppendFormat("{0} = {1}","TabPageIndex",e.TabPageIndex)
            messageBoxVB.AppendLine()
            messageBoxVB.AppendFormat("{0} = {1}","Action",e.Action)
            messageBoxVB.AppendLine()
            messageBoxVB.AppendFormat("{0} = {1}","Cancel",e.Cancel)
            messageBoxVB.AppendLine()
            MessageBox.Show(messageBoxVB.ToString(),"Selecting Event")



    End Sub

这是菜单,我希望它一直是这样:

menu

解决方法

看看下面的代码:

Private isCanceled As Boolean = True
Private Sub Enter_Click(sender As Object,e As EventArgs) Handles Enter.Click
    If TabControl1.SelectedIndex = 0 And Password.Text = "0000" Then
        isCanceled = False
        TabControl1.SelectedIndex = 1
    End If
End Sub
Private Sub TabControl1_Selecting(sender As Object,e As TabControlCancelEventArgs) Handles TabControl1.Selecting
    If e.TabPage.Equals(TabPage2) Then
        e.Cancel = isCanceled
    End If
End Sub

只有 TabControl1.SelectedIndex = 0 和 Password.Text = "0000",你才能导航到 TabPage2。