Das SelectedIndexChanged-Ereignis von ComboBox wurde nicht bei Enter aufgerufen

7

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:

%Vor%

Sollte ich etwas außer e.Equals(Keys.Enter) ?

verwenden?

Gibt es ein anderes Ereignis, nach dem ich suchen sollte?

BEARBEITEN: Ein Beispiel für die Elemente in ComboBox sind:

  • 10 - NEUER EINTRAG UND VOLLSTÄNDIGKEITSPRÜFUNG ---> this is the most common type
  • 13 - ZU TRB / HRB ZUGEWIESEN ---> there are a few with '/'
  • 60 - EXTERN (HALTEN BIS WEITERE HINWEISE) ---> there are a few with '(' and ')'

Grundsätzlich ist der Typ jeder Auflistung "## - SOME TEXT".

    
redhotspike 05.10.2012, 16:23
quelle

9 Antworten

4
%Vor%     
Paul Ishak 19.12.2012, 03:14
quelle
6

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.

    
nick_w 15.12.2012 07:49
quelle
4
%Vor%     
spajce 15.12.2012 08:24
quelle
3

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

    
AdiKonstantin 18.12.2012 08:53
quelle
2

Abonnieren Sie das KeyPressed-Ereignis:

%Vor%     
Sean Vaughn 05.10.2012 17:05
quelle
2

Dies wird Ihren Problemen helfen

%Vor%     
Sivodaya Tech 09.10.2012 04:24
quelle
2

Können Sie mich wissen lassen, ob das für Sie funktioniert?

%Vor%     
Zeddy 17.12.2012 01:13
quelle
2

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.

    
CalfordMath 30.11.2014 06:52
quelle
0

Schließen Sie die Liste manuell beim PreviewKeyDown-Ereignis:

%Vor%     
Adrian Stoica 28.03.2014 11:18
quelle

Tags und Links