Heim >Backend-Entwicklung >C++ >Wie kann ich eine benutzerdefinierte AutoVervollständigen-Funktion in C#-Textfeldern erstellen, die den Nicht-Präfix-Abgleich unterstützt?

Wie kann ich eine benutzerdefinierte AutoVervollständigen-Funktion in C#-Textfeldern erstellen, die den Nicht-Präfix-Abgleich unterstützt?

Barbara Streisand
Barbara StreisandOriginal
2025-01-02 18:28:38834Durchsuche

How Can I Create a Custom AutoComplete Feature in C# TextBoxes that Supports Non-Prefix Matching?

Benutzerdefinierte automatische Vervollständigung für C#-Textfelder

Bei der Implementierung der Autovervollständigungsfunktion in C#-Textfeldern ist es oft wünschenswert, Benutzern das Vervollständigen von Einträgen unabhängig von der Reihenfolge zu ermöglichen in dem sie tippen. Wenn beispielsweise ein Eintrag mit dem Format „[001] Nachname, Vorname Mitte“ vorhanden ist, sollte er in den Ergebnissen der automatischen Vervollständigung erscheinen, wenn der Benutzer „John“ als Vornamen eingibt.

Einschränkungen der Standardeinstellung AutoComplete

Die standardmäßige AutoComplete-Funktionalität in C# unterstützt nur den Präfixabgleich. Das bedeutet, dass Benutzer den Anfang des Eintrags eingeben müssen, um die automatische Vervollständigung auszulösen.

AutoVervollständigen mit benutzerdefinierter Ereignisbehandlung überschreiben

Um diese Einschränkung zu umgehen, können Sie eine benutzerdefinierte automatische Vervollständigung implementieren Funktion durch Überschreiben des OnTextChanged-Ereignisses. Dadurch können Sie die Texteingabe verarbeiten und relevante Autovervollständigungsergebnisse dynamisch anzeigen.

Beispielimplementierung

Das folgende Beispiel zeigt, wie Sie eine rudimentäre Autovervollständigungsfunktion mithilfe einer ListBox erstellen:

  1. Erstellen Sie eine ListBox und setzen Sie deren Sichtbarkeit auf „false“. Standard.
  2. Verwenden Sie das OnTextChanged-Ereignis der TextBox, um die Eingaben des Benutzers zu überwachen.
  3. Durchlaufen Sie im OnTextChanged-Ereignishandler die Quelle für die automatische Vervollständigung und fügen Sie passende Elemente zur ListBox hinzu.
  4. Setzen Sie die Sichtbarkeit der ListBox auf true, um die Ergebnisse der automatischen Vervollständigung anzuzeigen.
  5. Verwenden Sie die SelectedIndexChanged-Ereignis der ListBox, um ein Element auszuwählen und die TextBox mit dem ausgewählten Text zu füllen.

Benutzerdefinierte Funktion

Hier ist ein Beispiel für die Implementierung der benutzerdefinierten Funktion Autovervollständigungsfunktion beschrieben oben:

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;
        }
    }
}

Verbesserungen

Diese grundlegende Implementierung kann durch das Hinzufügen von Funktionen wie dem Anhängen von Text an die TextBox, der Erfassung zusätzlicher Tastaturbefehle und der Implementierung einer Filterung erweitert werden nach komplexeren Kriterien.

Das obige ist der detaillierte Inhalt vonWie kann ich eine benutzerdefinierte AutoVervollständigen-Funktion in C#-Textfeldern erstellen, die den Nicht-Präfix-Abgleich unterstützt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn