Maison > développement back-end > C++ > Comment puis-je implémenter une correspondance de chaîne partielle dans la fonctionnalité TextBox AutoComplete C# ?

Comment puis-je implémenter une correspondance de chaîne partielle dans la fonctionnalité TextBox AutoComplete C# ?

Barbara Streisand
Libérer: 2024-12-30 22:04:14
original
539 Les gens l'ont consulté

How Can I Implement Partial String Matching in C# AutoComplete TextBox Functionality?

Complétion automatique en C# : fonctionnalité de recherche partielle dans TextBox

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;
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal