Rubrik: Controls · ListBox & ComboBox | VB-Versionen: VB2005, VB2008 | 08.01.09 |
2 Listboxen parallel scrollen und markieren Dieser Tipp zeigt, wie Sie zwei Listboxen programmgesteuert parallel zueinander scrollen können. | ||
Autor: Dieter Otter | Bewertung: | Views: 21.024 |
www.tools4vb.de | System: 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