Maison >développement back-end >C++ >Comment implémenter une fonctionnalité de saisie semi-automatique flexible au-delà de la correspondance de préfixe en C# ?
En C#, lors de l'ajout d'une fonctionnalité de saisie semi-automatique à une zone de texte, la solution existante autorise uniquement la recherche basée sur un préfixe. Pour surmonter cette limitation et permettre des options de recherche plus flexibles, une implémentation personnalisée est nécessaire.
Une approche consiste à remplacer l'événement OnTextChanged et à implémenter une logique de saisie semi-automatique personnalisée. Ceci peut être réalisé en créant une vue de liste sous la zone de texte et en la remplissant dynamiquement en fonction des entrées de l'utilisateur.
Par exemple, voici une implémentation rudimentaire :
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; }
Cette approche vous permet pour rechercher des éléments quelle que soit leur position dans la chaîne. Vous pouvez encore améliorer la mise en œuvre en ajoutant des fonctionnalités supplémentaires telles que l'ajout de texte, la capture de commandes clavier, etc.
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!