Lors de l'implémentation des fonctionnalités de saisie semi-automatique en C#, les développeurs rencontrent souvent une limitation selon laquelle la chaîne saisie doit correspondre au début de l'élément dans la liste de saisie semi-automatique. En d’autres termes, l’implémentation actuelle ne prend en charge que les recherches de préfixes. Cependant, si vous avez besoin que cette fonctionnalité soit plus complète et autorise des correspondances partielles, comme la recherche par prénom au lieu d'exiger le numéro de préfixe, le comportement de saisie semi-automatique par défaut devient insuffisant.
Pour surmonter cette limitation, il est Il est possible de créer une fonction de saisie semi-automatique personnalisée en remplaçant l'événement OnTextChanged du contrôle TextBox. Cela permet de contrôler le filtrage et l'affichage des éléments suggérés en fonction de la saisie de l'utilisateur.
Par exemple, une ListBox peut être ajoutée immédiatement sous la TextBox, initialement masquée, et configurée pour afficher les éléments correspondants au fur et à mesure que l'utilisateur tape. L'événement OnTextChanged de TextBox et l'événement SelectedIndexChanged de ListBox peuvent être utilisés pour afficher et sélectionner les résultats de saisie semi-automatique appropriés.
Vous trouverez ci-dessous un exemple de base de la façon dont cette implémentation personnalisée pourrait être réalisée :
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; }
Ce code démontre une fonction de saisie semi-automatique personnalisée rudimentaire. Avec un minimum d'effort, des fonctionnalités supplémentaires pourraient être implémentées, telles que l'ajustement dynamique du texte TextBox et la gestion de diverses saisies au clavier. En remplaçant le comportement de saisie semi-automatique par défaut, vous bénéficiez d'une plus grande flexibilité dans la conception de solutions personnalisées qui répondent à vos besoins spécifiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!