vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Controls   |   VB-Versionen: VB2005, VB200830.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 OtterBewertung:     [ Jetzt bewerten ]Views:  12.425 
www.tools4vb.deSystem:  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