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 !