Rubrik: Controls · ListBox & ComboBox | VB-Versionen: VB2005, VB2008 | 02.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 Otter | Bewertung: | Views: 11.548 |
www.tools4vb.de | System: 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)