vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Controls · ListBox & ComboBox   |   VB-Versionen: VB2005, VB200808.01.09
2 Listboxen parallel scrollen und markieren

Dieser Tipp zeigt, wie Sie zwei Listboxen programmgesteuert parallel zueinander scrollen können.

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

Befinden sich zwei Listboxen mit einer gleichen Anzahl Elemente auf einem Formular, und soll beim Auswählen eines Elementes der Liste 1 parallel auch das entsprechende Element der Liste 2 selektiert werden, so hilft Ihnen dieser Tipp weiter.

Benötigt wird ein Timer-Objekt, dessen Intervall-Eigenschaft Sie auf den Wert 50 Millisekunden setzen. Jedesmal, wenn das Timer1_Tick-Ereignis ausgelöst wird, wird die aktuelle Position der Liste 1 mit der Liste 2 verglichen und ggf. die Position der Liste 2 neu gesetzt.

Erstellen Sie ein neues Windows-Forms Projekt und platzieren auf die Form1 zwei ListBox-Controls (ListBox1 und ListBox2). Fügen Sie anschließend nachfolgenden Code in den Codeteil der Form1 ein:

Public Class Form1
  ' Timer-Objekt zur ListBox-Synchronisation
  Dim WithEvents oTimer As Timer
  Private Sub Form1_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
 
    ' Listboxen füllen
    For i As Integer = 1 To 100
      ListBox1.Items.Add("Eintrag " & CStr(i))
      ListBox2.Items.Add("Eintrag " & CStr(i))
    Next
 
    ' Timer starten
    oTimer = New Timer
    oTimer.Interval = 50
    oTimer.Start()
  End Sub
  Private Sub oTimer_Tick(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles oTimer.Tick
 
    ' Position ListBox2 mit Position ListBox1 synchronisieren
    With ListBox1
      ' TopIndex
      If .TopIndex <> ListBox2.TopIndex Then
        ListBox2.TopIndex = .TopIndex
      End If
 
      ' SelectedIndex
      If .SelectedIndex <> ListBox2.SelectedIndex Then
        ListBox2.SelectedIndex = .SelectedIndex
      End If
    End With
  End Sub
End Class