Rubrik: Controls | VB-Versionen: VB2005, VB2008 | 30.12.08 |
TabControl: Rechtsklick auf Tab-Reiter erkennen Eine Funktion, mit der sich prüfen lässt, auf welchen Tab-Reiter ein Mausklick erfolgte | ||
Autor: Dieter Otter | Bewertung: | Views: 12.461 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Klickt der Anwender mit der rechten Maustaste auf einen Tab-Reiter des TabControls wird diese bei linker Maustaste autom. geöffnet. Bei rechter Maustaste hingegen passiert gar nichts. Auch weiß man nicht, auf welchem Tab-Reiter geklickt wurde.
Mit nachfolgender Funktion lässt sich der Tab-Reiter über das MouseDown-Event anhand der übergebenen Maus-Koordinaten ermitteln:
''' <summary> ''' Ermittelt den Tab-Reiter anhand der übergebenen Mauskoordinaten ''' </summary> ''' <param name="TabControl">TabControl-Objekt</param> ''' <param name="location">Mauskoordinaten (Point)</param> ''' <returns>Index des Tab-Reiters beginnend bei 1 ''' oder 0, wenn sich die Koordinaten außerhalb der Tab-Reiter befinden</returns> Public Function GetTabPageFromXY(ByVal TabControl As TabControl, _ ByVal location As Point) As Integer With TabControl1 For i As Integer = 0 To .TabCount - 1 ' Prüfen, ob Mausposition innerhalb des Tab-Rechtecks liegt If .GetTabRect(i).Contains(location) Then Return (i + 1) End If Next End With ' Defaultwert, wenn die Koordinaten außerhalb der Tab-Reiter liegen Return (0) End Function
Aufrufbeispiel:
Private Sub TabControl1_MouseDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) Handles TabControl1.MouseDown ' Bei Mausklick, Tab-Reiter abfragen If e.Button = Windows.Forms.MouseButtons.Right Then Dim nTab As Integer = GetTabPageFromXY(TabControl1, e.Location) If nTab > 0 Then MsgBox("Rechtsklick auf TabPage Nr. " & nTab) End If End If End Sub