Ich habe eine WinForm TabControl, die genug Registerkarten hat, dass einige Registerkarten in Ansicht mit den <> Schaltflächen gescrollt werden müssen.TabControl Tab Anzeigen - Scroll in Ansicht
Als alternative Aktion können Sie auf die letzte sichtbare Registerkarte klicken und die Registerkarten nach links scrollen, um diese Registerkarte und die nächste Registerkarte anzuzeigen. Dies funktioniert jedoch einwandfrei, die umgekehrte Aktion tritt nicht auf, wenn Sie auf die erste Registerkarte (ganz links) klicken. Eine erwartete Aktion würde für das Steuerelement automatisch die angeklickte Registerkarte und die vorherige anzeigen.
Welche Ereignisse oder Methoden kann ich verwenden, um zu sehen, ob die TabPage-Registerkarte sichtbar ist und um die TabPage-Registerkarte auf dem Bildschirm zu scrollen?
Hier einige Forschungscode:
Private Sub TabControl1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TabControl1.SelectedIndexChanged
If mbFormLoad Then Exit Sub
Dim t As TabPage = TabControl1.SelectedTab
Debug.Print(t.Name)
Debug.Print("CanFocus:" & TabControl1.TabPages(0).CanFocus)
Debug.Print("CanSelect:" & TabControl1.TabPages(0).CanSelect)
Debug.Print("IsAccessible:" & TabControl1.TabPages(0).IsAccessible)
' works but causes screen noise
If TabControl1.SelectedTab.TabIndex > 0 Then
mbFormLoad = True
TabControl1.SuspendLayout()
TabControl1.SelectedIndex = TabControl1.SelectedTab.TabIndex - 1
TabControl1.SelectedIndex = TabControl1.SelectedTab.TabIndex + 1
TabControl1.ResumeLayout()
mbFormLoad = False
End If
End Sub
Alle der gedruckten Eigenschaften false zurück.
Um zu testen, fügen Sie eine tabcontrol mit mehreren Registerkarten, Formular anzeigen und machen es dünn genug, dass die <> -Schaltflächen oben rechts angezeigt und eine Bildlauf bewegt die erste Registerkarte aus der Sicht.