Création d’une zone de texte Google Suggestish dans C# WinForms

Avez-vous déjà souhaité mettre en œuvre une zone de texte intelligente dans votre application C# WinForms qui rappelle les entrées de l’utilisateur, tout comme Google ? Cette fonctionnalité, souvent appelée autocomplétion, améliore non seulement l’expérience utilisateur, mais rend également votre application plus adaptable au comportement des utilisateurs. Dans cet article de blog, nous allons expliquer comment créer une zone de texte Google Suggestish qui se souvient des dernières entrées, garantissant ainsi efficacité et commodité pour vos utilisateurs.

Le Problème

Lorsque vous développez une application autonome en C#, trouver un moyen efficace de se souvenir constamment des saisies des utilisateurs peut être un défi. Les utilisateurs s’attendent à une expérience fluide où leurs saisies récentes sont disponibles pour une sélection rapide, en particulier dans les formulaires ou les champs de recherche. L’objectif est clair : créer une zone de texte qui conserve les dernières entrées même après la fermeture de l’application.

La Solution

La bonne nouvelle est que l’implémentation de cette fonctionnalité est assez simple ! Nous utiliserons AutoCompleteStringCollection du namespace System.Windows.Forms pour gérer notre fonctionnalité d’autocomplétion. De plus, nous allons sauvegarder l’entrée dans un fichier texte pour rendre les entrées persistentes à travers les sessions.

Guide Étape par Étape

Décomposons l’implémentation en parties gérables.

1. Configuration du Formulaire

Tout d’abord, vous devez créer une simple application WinForms avec une TextBox. La TextBox devra être configurée pour utiliser une source d’autocomplétion personnalisée.

namespace AutoComplete
{
    public partial class Main : Form
    {
        // Création d'une nouvelle instance de l'AutoCompleteStringCollection
        AutoCompleteStringCollection acsc;

        public Main()
        {
            InitializeComponent();

            // Configurer la TextBox
            txtMain.AutoCompleteSource = AutoCompleteSource.CustomSource;
            txtMain.AutoCompleteMode = AutoCompleteMode.SuggestAppend;

            // Initialiser l'AutoCompleteStringCollection
            acsc = new AutoCompleteStringCollection();
            txtMain.AutoCompleteCustomSource = acsc;
        }
    }
}

2. Gestion des Saisies Utilisateurs

Ensuite, nous devons suivre les saisies utilisateurs. Nous pouvons faire cela en répondant à l’événement KeyDown lorsque la touche Enter est pressée. Voici comment vous pouvez gérer les entrées :

private void txtMain_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        if (acsc.Count < 10)
        {
            // Ajouter le texte actuel à la collection
            acsc.Add(txtMain.Text);
        }
        else
        {
            // Supprimer la plus ancienne entrée et ajouter la nouvelle
            acsc.RemoveAt(0);
            acsc.Add(txtMain.Text);
        }
    }
}

3. Sauvegarde et Chargement des Entrées

Pour assurer que les entrées ne soient pas perdues lorsque l’application est fermée, nous devons implémenter des mécanismes de sauvegarde et de chargement.

  • Sauvegarde des Entrées : Cela se produit dans l’événement Main_FormClosed, où nous écrivons les entrées dans un fichier.
private void Main_FormClosed(object sender, FormClosedEventArgs e)
{
    using (StreamWriter sw = new StreamWriter("AutoComplete.acs"))
    {
        foreach (string s in acsc)
            sw.WriteLine(s);
    }
}
  • Chargement des Entrées : Implémentez cela dans l’événement Main_Load pour peupler la zone de texte avec les entrées précédentes stockées dans le fichier.
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);
            }
        }
    }
}

Conclusion

En suivant ces étapes, vous pouvez créer une zone de texte dans votre application C# qui se souvient des dernières saisies utilisateurs, offrant une expérience conviviale rappelant la fonctionnalité d’autocomplétion de Google.

Ce guide présente une implémentation de base, mais n’hésitez pas à modifier la logique pour créer un modèle plus sophistiqué selon vos besoins. Que ce soit en incorporant un système de notation pour les entrées ou en personnalisant les limites d’entrées, les possibilités d’amélioration sont infinies.

Si vous avez des questions ou des idées à partager concernant votre implémentation, n’hésitez pas à laisser un commentaire ci-dessous !