Erstellung eines Google Suggestish Textfelds in C# WinForms

Haben Sie jemals gewünscht, ein intelligentes Textfeld in Ihrer C# WinForms-Anwendung zu implementieren, das Benutzer-Eingaben genau wie Google erinnert? Diese Funktionalität, oft als Autovervollständigung bezeichnet, verbessert nicht nur das Benutzererlebnis, sondern macht Ihre Anwendung auch anpassungsfähiger gegenüber dem Nutzerverhalten. In diesem Blogbeitrag werden wir durchgehen, wie man ein Google Suggestish Textfeld erstellt, das die letzten x Einträge speichert und somit Effizienz und Komfort für Ihre Nutzer gewährleistet.

Das Problem

Bei der Entwicklung einer eigenständigen Anwendung in C# kann es herausfordernd sein, einen effektiven Weg zu finden, um Benutzer-Eingaben ständig zu speichert. Nutzer erwarten ein nahtloses Erlebnis, bei dem ihre letzten Eingaben zur schnellen Auswahl verfügbar sind, insbesondere in Formularen oder Suchfeldern. Das Ziel ist klar: ein Textfeld zu schaffen, das die letzten paar Einträge auch nach dem Schließen der Anwendung speichert.

Die Lösung

Die gute Nachricht ist, dass die Implementierung dieser Funktionalität ziemlich einfach ist! Wir verwenden AutoCompleteStringCollection aus dem Namensraum System.Windows.Forms, um unsere Autovervollständigung zu verwalten. Darüber hinaus speichern wir die Eingaben in einer Textdatei, um die Einträge über Sitzung hinweg persistent zu machen.

Schritt-für-Schritt-Anleitung

Lassen Sie uns die Implementierung in handhabbare Teile aufteilen.

1. Einrichten des Formulars

Zuerst müssen Sie eine einfache WinForms-Anwendung mit einem TextBox erstellen. Die TextBox muss so konfiguriert werden, dass sie eine benutzerdefinierte Autovervollständigungsquelle verwendet.

namespace AutoComplete
{
    public partial class Main : Form
    {
        // Erstellung einer neuen Instanz der AutoCompleteStringCollection
        AutoCompleteStringCollection acsc;

        public Main()
        {
            InitializeComponent();

            // Konfigurieren der TextBox
            txtMain.AutoCompleteSource = AutoCompleteSource.CustomSource;
            txtMain.AutoCompleteMode = AutoCompleteMode.SuggestAppend;

            // Initialisieren der AutoCompleteStringCollection
            acsc = new AutoCompleteStringCollection();
            txtMain.AutoCompleteCustomSource = acsc;
        }
    }
}

2. Verarbeiten von Benutzer-Eingaben

Als Nächstes müssen wir die Eingaben der Benutzer verfolgen. Dies können wir tun, indem wir auf das KeyDown-Ereignis reagieren, wenn die Eingabetaste gedrückt wird. So können Sie die Einträge verwalten:

private void txtMain_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        if (acsc.Count < 10)
        {
            // Den aktuellen Text zur Sammlung hinzufügen
            acsc.Add(txtMain.Text);
        }
        else
        {
            // Den ältesten Eintrag entfernen und den neuen hinzufügen
            acsc.RemoveAt(0);
            acsc.Add(txtMain.Text);
        }
    }
}

3. Speichern und Laden von Einträgen

Um sicherzustellen, dass die Einträge nicht verloren gehen, wenn die Anwendung geschlossen wird, müssen wir Speicher- und Lade-Mechanismen implementieren.

  • Speichern von Einträgen: Dies geschieht im Main_FormClosed-Ereignis, wo wir die Einträge in eine Datei schreiben.
private void Main_FormClosed(object sender, FormClosedEventArgs e)
{
    using (StreamWriter sw = new StreamWriter("AutoComplete.acs"))
    {
        foreach (string s in acsc)
            sw.WriteLine(s);
    }
}
  • Laden von Einträgen: Implementieren Sie dies im Main_Load-Ereignis, um das Textfeld mit vorherigen Einträgen, die in der Datei gespeichert sind, zu füllen.
private void Main_Load(object sender, EventArgs e)
{
    if (File.Exists("AutoComplete.acs"))
    {
        using (StreamReader sr = new StreamReader("AutoComplete.acs"))
        {
            string line;
            while ((line = sr.ReadLine()) != null)
            {
                acsc.Add(line);
            }
        }
    }
}

Fazit

Durch das Befolgen dieser Schritte können Sie ein Textfeld in Ihrer C#-Anwendung erstellen, das die letzten paar Benutzereingaben speichert und ein benutzerfreundliches Erlebnis bietet, das an die Autovervollständigungsfunktion von Google erinnert.

Dieser Leitfaden zeigt eine grundlegende Implementierung, aber fühlen Sie sich frei, die Logik zu ändern, um ein anspruchsvolleres Modell gemäß Ihren Anforderungen zu schaffen. Ob Sie ein Bewertungssystem für Einträge einfügen oder die Eingabebeschränkungen anpassen, die Möglichkeiten zur Verbesserung sind endlos.

Wenn Sie Fragen haben oder Ideen bezüglich Ihrer Implementierung teilen möchten, hinterlassen Sie bitte einen Kommentar unten!