Bei der Implementierung von Autocomplete-Funktionen in C# stoßen Entwickler häufig auf eine Einschränkung, bei der die eingegebene Zeichenfolge mit dem Anfang des Elements in übereinstimmen muss die Autovervollständigungsliste. Mit anderen Worten: Die aktuelle Implementierung unterstützt nur Präfixsuchen. Wenn diese Funktionalität jedoch umfassender sein und Teilübereinstimmungen ermöglichen soll, z. B. die Suche nach dem Vornamen statt der Angabe der Präfixnummer, reicht das Standardverhalten der automatischen Vervollständigung nicht mehr aus.
Um diese Einschränkung zu überwinden, reicht es nicht aus Es ist möglich, eine benutzerdefinierte Autovervollständigungsfunktion zu erstellen, indem das OnTextChanged-Ereignis des TextBox-Steuerelements überschrieben wird. Dies ermöglicht die Kontrolle über das Filtern und Anzeigen der vorgeschlagenen Elemente basierend auf der Eingabe des Benutzers.
Zum Beispiel kann eine ListBox direkt unter der TextBox hinzugefügt, zunächst ausgeblendet und so eingestellt werden, dass passende Elemente angezeigt werden, wenn der Benutzer sie eingibt. Das OnTextChanged-Ereignis der TextBox und das SelectedIndexChanged-Ereignis der ListBox können verwendet werden, um die entsprechenden Ergebnisse der automatischen Vervollständigung anzuzeigen und auszuwählen.
Unten finden Sie ein grundlegendes Beispiel dafür, wie diese benutzerdefinierte Implementierung erreicht werden könnte:
public Form1() { InitializeComponent(); acsc = new AutoCompleteStringCollection(); textBox1.AutoCompleteCustomSource = acsc; textBox1.AutoCompleteMode = AutoCompleteMode.None; textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; } private void button1_Click(object sender, EventArgs e) { acsc.Add("[001] some kind of item"); acsc.Add("[002] some other item"); acsc.Add("[003] an orange"); acsc.Add("[004] i like pickles"); } 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 listBox1_LostFocus(object sender, System.EventArgs e) { hideResults(); } void hideResults() { listBox1.Visible = false; }
Dieser Code demonstriert eine rudimentäre benutzerdefinierte Autovervollständigungsfunktion. Mit minimalem Aufwand könnten zusätzliche Funktionen implementiert werden, wie beispielsweise die dynamische Anpassung des TextBox-Textes und die Handhabung verschiedener Tastatureingaben. Durch das Überschreiben des Standardverhaltens der automatischen Vervollständigung erhalten Sie mehr Flexibilität beim Entwerfen benutzerdefinierter Lösungen, die Ihren spezifischen Anforderungen entsprechen.
Das obige ist der detaillierte Inhalt vonWie kann ich einen teilweisen String-Abgleich in der C#-AutoComplete-TextBox-Funktionalität implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!