vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 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, VB200802.06.10
ListBox-Eintrag setzen ohne SelectedIndexChanged-Ereignis

Wie man einen ListBox-Eintrag per Code auswählt, ohne dass autom. das SelectedIndexChanged-Ereignis ausgelöst wird, zeigt dieser Tipp.

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

Haben Sie sich auch schon oft darüber geärgert, dass beim Setzen der SelectedIndex-Eigenschaft einer ListBox per Code autom. auch immer das SelectedIndexChanged-Ereignis ausgelöst wird?

Nachfolgender Tipp sorgt ab sofort für Abhilfe!

' Benötigte API-Deklarationen
Private Declare Auto Function SendMessage Lib "user32" ( _
  ByVal hwnd As IntPtr, _
  ByVal wMsg As Integer, _
  ByVal wParam As Integer, _
  ByVal lParam As Integer) As Integer
 
Private Const LB_SETCURSEL = &H186
' ListBox-Eintrag selektieren ohne 
' SelectedIndexChanged-Ereignis
Public Sub LB_SetIndex(oList As ListBox, _
  ByVal Index As Integer)
 
  SendMessage oList.Handle.ToInt32, LB_SETCURSEL, Index, 0&
End Sub

Kopieren Sie obigen Code am besten in ein Modul.

Statt bisher:

ListBox1.SelectedListIndex = 0

schreiben Sie ab sofort...

LB_SetIndex(ListBox1, 0)

... und das SelectedIndexChanged-Ereignis wird nur noch dann ausgelöst, wenn der Anwender einen Eintrag entweder per Maus oder per Tastatur auswählt.

Ach ja: soll kein Eintrag in der Liste selektiert sein, einfach -1 als Parameter angeben:

LB_SetIndex(ListBox1, -1)