Hallo allerseits
Ich habe eine ComboBox 'CBGebaude' mit einer Tabelle einer SQL-Datenbank als DataSoure:
Ich habe für das Ereignis 'TextChanged' einen Filter eingebaut, der bei jeder Textänderung aktiv wird:
So verkürzt sich die Liste mit jeder Zeicheneingabe wie gewünscht.
Das Problem:
Wenn ich dann mit der Maus einen der Listeneinträge eindeutig anklicke, dann wird beim ERSTEN Versuch IMMER DER ERSTE EINTRAG aus der verbliebenen Liste aktiviert, nie das angeklickte Item.
Erst wenn ich den Vorgang mit denselben Zeicheneingaben nochmals durchführe, dann wird korrekt der angeklickte Eintrag aktiviert - aber niemals beim ersten Mal.
Gibt es hier eine Abhilfe?
Ich wollte eigentlich die Eigenschaft
Thanks for help.
Code-Tags eingefügt. ~Thunderbolt
Ich habe eine ComboBox 'CBGebaude' mit einer Tabelle einer SQL-Datenbank als DataSoure:
Ich habe für das Ereignis 'TextChanged' einen Filter eingebaut, der bei jeder Textänderung aktiv wird:
VB.NET-Quellcode
- Dim enteredText As String = Trim(CBGebaude.Text)
- Debug.Print("Eingabe >" & enteredText & "<")
- If enteredText = "" Then
- '>>>Wenn der Text gelöscht wird sollen alle Einträge sichtbar sein
- CBGebaude.DataSource.DefaultView.RowFilter = CBGebaude.DataSource.Columns("GebäudeName").ColumnName & " like '%'"
- Else
- '>>> Wenn etwas eigegeben wird, werden die Einträge nach diesem String gefiltert
- CBGebaude.DataSource.DefaultView.RowFilter = CBGebaude.DataSource.Columns("GebäudeName").ColumnName & " like '%" & enteredText & "%'"
- End If
- '>>> bis hierher wunderbar, die DroppedDown-Liste enthält korrekt nur noch die gefilterten Einträge
- '>>>Da 'default' immer der oberste Eintrag der Liste im Textfeld erscheint, tausche ich diesen mit der Benutzereingabe aus.
- '>>> Dass dabei die Routine nochmals durchlaufen wird, stört den Ablauf nicht
- CBGebaude.Text = enteredText
- '>>> Cursor ans Ende, damit die Eingabe weitergeführt werden kann
- CBGebaude.SelectionStart = CBGebaude.Text.Length
So verkürzt sich die Liste mit jeder Zeicheneingabe wie gewünscht.
Das Problem:
Wenn ich dann mit der Maus einen der Listeneinträge eindeutig anklicke, dann wird beim ERSTEN Versuch IMMER DER ERSTE EINTRAG aus der verbliebenen Liste aktiviert, nie das angeklickte Item.
Erst wenn ich den Vorgang mit denselben Zeicheneingaben nochmals durchführe, dann wird korrekt der angeklickte Eintrag aktiviert - aber niemals beim ersten Mal.
Gibt es hier eine Abhilfe?
Ich wollte eigentlich die Eigenschaft
ShouldPreserveUserEnteredPrefix
der ComboBox auf True setzen, damit ich die Zeile CBGebaude.Text = enteredText
nicht benötige, aber dieses Property ist für das Objekt ComboBox
nicht verfügbar (...warum auch immer).Thanks for help.
Code-Tags eingefügt. ~Thunderbolt
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()