Heim >Backend-Entwicklung >C++ >Wie implementiert man eine benutzerdefinierte automatische Vervollständigung in C# mithilfe eines benutzerdefinierten Ereignishandlers?
Problem:
Eine Autovervollständigungsfunktion wird für ein Textfeld implementiert, in dem Ergebnisse angezeigt werden stammen aus einer Datenbank im Format „[001] Last, First Middle“. Die aktuelle Implementierung erfordert die Eingabe von „[001]“, um die Suche zu starten, obwohl das gewünschte Verhalten darin besteht, die automatische Vervollständigung basierend auf der Eingabe des Vornamens zu ermöglichen, z. B. „John“ sollte „[001] Smith, John D.“ zurückgeben
Lösung:
Die integrierte AutoComplete-Funktionalität in C# unterstützt nur die präfixbasierte Suche und macht es somit möglich für diese Anforderung ungeeignet. Eine Problemumgehung besteht darin, eine benutzerdefinierte Autovervollständigungsfunktion zu erstellen, indem das OnTextChanged-Ereignis behandelt und das gewünschte Verhalten programmgesteuert implementiert wird.
Implementierung:
Eine ListBox wird unterhalb des Textfelds und seines Textfelds hinzugefügt Die Sichtbarkeit ist zunächst auf „false“ gesetzt. Wenn der Benutzer Text in das Textfeld eingibt, wird das OnTextChanged-Ereignis des Textfelds ausgelöst. Der Handler führt die folgenden Schritte aus:
Wenn ein Element in der Listbox ausgewählt wird, wird das SelectedIndexChanged-Ereignis der Listbox ausgelöst und der Text des ausgewählten Elements wird in die Listbox kopiert Die Texteigenschaft der Textbox. Dadurch wird der Autovervollständigungsprozess abgeschlossen und das Listenfeld ausgeblendet.
Codebeispiel:
private void textBox1_TextChanged(object sender, System.EventArgs e) { listBox1.Items.Clear(); if (textBox1.Text.Length == 0) { hideResults(); return; } foreach (String s in textBox1.AutoCompleteCustomSource) { if (s.Contains(textBox1.Text)) { Console.WriteLine("Found text in: " + s); listBox1.Items.Add(s); listBox1.Visible = true; } } } void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) { textBox1.Text = listBox1.Items[listBox1.SelectedIndex].ToString(); hideResults(); } void hideResults() { listBox1.Visible = false; }
Diese Lösung bietet ein rudimentäres Beispiel für eine benutzerdefinierte Autovervollständigungsfunktion, die weiter verbessert werden kann basierend auf spezifischen Anforderungen. Es demonstriert jedoch das Prinzip der Verarbeitung von Texteingaben und der dynamischen Aktualisierung der Liste der vorgeschlagenen Werte.
Das obige ist der detaillierte Inhalt vonWie implementiert man eine benutzerdefinierte automatische Vervollständigung in C# mithilfe eines benutzerdefinierten Ereignishandlers?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!