vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Controls · ListView & TreeView   |   VB-Versionen: VB2005, VB200816.12.09
Bestimmten ListView-Eintrag selektieren und Fokus setzen

Eine Funktion, die einen bestimmten Eintrag innerhalb des ListView-Controls selektiert, diesen in den sichtbaren Bereich bringt und den Fokus auf den Eintrag setzt.

Autor:   Dieter OtterBewertung:  Views:  31.308 
www.tools4vb.deSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Heute stellen wir Ihnen eine universelle Funktion vor, mit der Sie einen ganz bestimmten Eintrag innerhalb des ListView-Controls selektieren können und diesen in den sichtbaren Bereich bringen.

Wichtig: Damit der Eintrag auch den Fokus erhält, d.h. dieser autom. selektiert ist, wenn das ListView wieder den Fokus erhält, muss die Focused-Eigenschaft des ListView-Eintrags auf True festgelegt werden!

''' <summary>
''' Selektiert den angegebenen ListView-Eintrag, zeigt diesen 
''' an und setzt den Fokus auf diesen Eintrag
''' </summary>
''' <param name="ListView">ListView-Control</param>
''' <param name="Index">Index des Eintrags, der selektiert werden soll</param>
''' <param name="RemoveSelection">Optional. Legt fest, ob eine bereits 
''' vorhandene Selektion vorher entfernt werden soll.</param>
Public Sub LV_SelectFocus(ByVal ListView As ListView, ByVal Index As Integer, _
  Optional ByVal RemoveSelection As Boolean = True)
 
  With ListView
    ' Plausibilitätsprüfungen
    If Index < 0 Then Index = 0
    If Index > .Items.Count - 1 Then Index = .Items.Count - 1
 
    ' ggf. vorher eine vorhandene Auswahl entfernen
    If RemoveSelection Then .SelectedItems.Clear()
 
    If Index < .Items.Count Then
      With .Items(Index)
        ' Eintrag selektieren
        .Selected = True
 
        ' Sicherstellen, dass der Eintrag sich im 
        ' sichtbaren Bereich des Controls befindet
        .EnsureVisible()
 
        ' Eintrag als aktiven Eintrag festlegen
        .Focused = True
      End With
    End If
  End With
End Sub

Aufrufbeispiel:

' 1. Eintrag selektieren
LV_SelectFocus(ListView1, 0)
' Letzten Eintrag selektieren
LV_SelectFocus(ListView1, ListView1.Items.Count)
' 10 Einträge "zurückblättern"
Dim Index As Integer = 0
With ListView1
  If .SelectedIndices.Count > 0 Then Index = .SelectedIndices(0)
End With
LV_SelectFocus(ListView1, Index - 10)
' 10 Einträge "vorblättern"
Dim Index As Integer = 0
With ListView1
  If .SelectedIndices.Count > 0 Then Index = .SelectedIndices(0)
End With
LV_SelectFocus(ListView1, Index + 10)



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.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle 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.