Ich arbeite an VS 2010 mit VB mit .NET Framework 4.0
Ich habe ein combobox
. Es hat einige Elemente und zeigt gut. Hier wird es ein bisschen komisch:
Wenn ich auf den Dropdown-Pfeil auf combobox
klicke und auf das gewünschte Element klicke, wird SelectedIndexChanged
aufgerufen - gut.
Wenn ich in den Textbereich von combobox
klicke und das gewünschte Wort eintippe und es durch Drücken der Nach-oben- oder Nach-Unten-Taste beende, wird SelectedIndexChanged
aufgerufen - auch gut.
Wenn ich auf den Drop-down-Pfeil auf combobox
klicke und mit der Eingabe der gewünschten Auswahl beginne und sie mit der Eingabetaste beende, wird SelectedIndexChanged
nicht aufgerufen - PROBLEM.
Gibt es ein anderes Ereignis, das im letzten Fall von ENTER
verursacht wird? Ich habe versucht, die TextChanged
und TextUpdate
Ereignisse zu verwenden, aber diese scheinen nicht zu funktionieren:
Sollte ich etwas außer e.Equals(Keys.Enter)
?
Gibt es ein anderes Ereignis, nach dem ich suchen sollte?
BEARBEITEN:
Ein Beispiel für die Elemente in ComboBox
sind:
---> this is the most common type
---> there are a few with '/'
---> there are a few with '(' and ')'
Grundsätzlich ist der Typ jeder Auflistung "## - SOME TEXT".
Haftungsausschluss: Dies ist in C # geschrieben - lassen Sie mich wissen, wenn Sie es in VB übersetzt benötigen.
%Vor% Interessanterweise sagen die Dokumente , dass wir es sein sollten Verwenden des Ereignisses SelectionChangeCommitted
anstelle des Ereignisses SelectedIndexChanged
beim Bearbeiten von vom Benutzer vorgenommenen Änderungen. Dies ist in diesem Fall erforderlich, da das Ereignis SelectedIndexChanged
zweimal mit meinem Ansatz ausgelöst wird.
Bearbeiten:
Um zu verhindern, dass der Benutzer die gesamte Zeichenfolge eingeben muss, verwenden Sie den Ratschlag von Adi: Gehen Sie zu den Eigenschaften des Kombinationsfelds und setzen Sie set AutoCompleteMode
auf SuggestAppend
und AutoCompleteSource
auf ListItems
- I hat diese Einstellungen beim Erstellen meiner Antwort verwendet, also sollte es für dich funktionieren.
Ich glaube, dass Sie AutoCompleteMode
auf SuggestAppend
und AutoCompleteSource
auf ListItems
setzen sollten. Wenn das, was Sie eintippen, mit den in die ComboBox geladenen Elementen nachhaltig ist, indem Sie es niederschreiben und dieses Element finden, wird, wenn Enter gedrückt wird, SelectedIndexChanged
ausgelöst (auch wenn es eine Übereinstimmung gibt) würde nicht gefunden - der erste in der Liste wird ausgewählt)
Ich habe etwas vorbereitet , um Ihnen dies zu verdeutlichen.
Grüße,
Adi Konstantin
Ich hatte ein ähnliches Problem, wenn der Combobox-Dropdown-Stil auf "Einfach" eingestellt war und die automatische Vervollständigung auf Anhängen gesetzt war. Meine Problemumgehung bestand darin, dass eine Zeichenfolgevariable den Combobox-Text bei jedem Textänderungsereignis speichern soll. Wenn Sie ENTER drücken, können Sie den gelöschten Text abrufen und dem Combobox-Text zuweisen.
'Globale Deklaration
%Vor%Oben gibt es einige gute Antworten, aber ich mochte, dass ich nicht alle Befehlstasten und Pfeile usw. sortieren musste.
Schließen Sie die Liste manuell beim PreviewKeyDown-Ereignis:
%Vor%Tags und Links vb.net