.NET 选项卡控件选定索引 - 奇怪的行为

.NET Tab Control Selected Index - strange behaviour

我有一个包含 7 页的选项卡控件。我有一个视图模型,它启用两个按钮,用于通过选项卡控件向后和向前导航。这工作正常,但开始出现奇怪的行为,因此当您位于选项卡索引 1 上并想将其设置为选项卡索引 0 时,它会立即选择选项卡索引 3,并显示没有控件的选项卡页面。从任何其他标签页按后退按钮没有问题,按前进按钮,类似。我尝试 'hard-coding' 选定的选项卡,并得到完全相同的结果。代码如下:

public class ViewModel

    Private WithEvents tabControl As TabControl

.
.
.
    Public Sub NextTab()
        If tabControl.SelectedIndex < tabControl.TabCount Then
            tabControl.SelectedIndex += 1
        End If
    End Sub

    Public Sub PreviousTab()
        If tabControl.SelectedIndex > 0 Then
            ' The code in the If statement below is trying to work around the problem, none of which has been successful
            If tabControl.SelectedIndex = 1 Then
                'tabControl.SelectedIndex = 0
                tabControl.SelectedTab = tabControl.TabPages(0)
                tabControl.TabPages(0).Focus()
            Else
                tabControl.SelectedIndex -= 1
            End If
        End If
    End Sub
.
.
.
End Class

Dim vm as new ViewModel(tcInfoTabs)
.
.
.


Private Sub btnNext_Click(sender As Object, e As System.EventArgs) Handles btnNext.Click
    vm.NextTab()
End Sub

Private Sub btnPrevious_Click(sender As Object, e As System.EventArgs) Handles btnPrevious.Click
    vm.PreviousTab()
End Sub

尝试将制表符从索引 1 移动到索引零总是导致它移动到索引 3。硬编码立即数 window 中的位置具有相同的结果:tabControl.SelectedIndex = 1 - > 最终指向 3。表格的其余部分没有其他事件。如果您在选项卡 2 上减去 1,您最终会在选项卡 1 上。如果您在选项卡 1 上减去 1,您最终会在选项卡 3 上。这是有效的,但已停止。我正在使用.Net 4.0,欢迎任何建议。

找到答案:PEBKAC - 键盘和椅子之间存在问题。 在每个标签页的底部,我有一个小文本框,当用户在标签页上的字段中切换时,它会在用户输入时自动将用户移至下一个标签。该字段位于每个标签页标签顺序的底部。然而,当第一个标签页被选中时,该字段的 Enter 事件将被触发,将其移动到下一页,同样的事件将被触发,下一页再次发生同样的事件。这仅在向后移动时发生。不知道为什么这个 Enter 事件会在 Tab 键顺序末尾的字段上触发,并且只有当您在程序控制下更改了 Tab 键索引时才会触发。实际上,单击第一个选项卡并没有触发该字段的 Enter 事件。

简短修复 - kludge - 每次用户向前或向后移动时添加一个由按钮设置的标志,告诉该字段事件不要触发。