vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Controls · ListView & TreeView   |   VB-Versionen: VB2005, VB200812.05.09
Spalte beim Klick in das ListView ermitteln

Ein Beispiel, wie man ermitteln kann, in welche Daten-Spalte der Mausklick in einem ListView erfolgte.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  15.822 
www.tools4vb.deSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Das ListView-Control wird oft eingesetzt, da man hier - im Gegensatz zur Standard-Listbox - mehrere Spalten festlegen kann. Und wenn man dann das ListView in der Detail-Ansicht verwendet ähnelt es doch sehr der normalen Listbox.

Beim Klick auf eine Datenzeile löst das Control u.a. das SelectedIndexChanged-Event aus, über das man den selektierten Eintrag ermitteln kann.

Was aber, wenn man beim Mausklick auch feststellen will oder muss, in welche Spalte der Klick erfolgte?
Ein entsprechendes Event ist hierfür leider nicht vorgesehen, so dass wir uns selbst behelfen müssen.

Über die HitTest-Eigenschaft des ListView-Controls kann man das ListItem anhand der Mauskoordinaten ermitteln. Den Code hierzu setzen wir daher am besten in das MouseClick-Ereignis, da wir hier die Mauskoordinaten schnell abrufen können. Jetzt müssen wir nur noch ermitteln, in welche Spalte der Klick erfolgte.

Und das sieht dann so aus:

Private Sub ListView1_MouseClick(ByVal sender As Object, _
  ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseClick
 
  ' Datenzeile ermitteln
  Dim HitItem As ListViewHitTestInfo = ListView1.HitTest(e.Location)
  If Not HitItem.Item Is Nothing Then
    ' Spalte ermitteln
    Dim column As Integer = 1
    With HitItem.Item
      For i As Integer = 1 To .SubItems.Count - 1
        If .SubItems(i).Bounds.Contains(e.X, e.Y) Then
          column = i + 1 : Exit For
        End If
      Next
      MsgBox("Mausklick erfolgte in die " & CStr(column) & ". Spalte")
    End With
  End If
End Sub

Dieser Tipp wurde bereits 15.822 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel