Maison >développement back-end >C++ >Comment implémenter la saisie semi-automatique personnalisée en C# à l'aide d'un gestionnaire d'événements personnalisé ?

Comment implémenter la saisie semi-automatique personnalisée en C# à l'aide d'un gestionnaire d'événements personnalisé ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-31 17:50:10656parcourir

How to Implement Custom Autocomplete in C# Using a Custom Event Handler?

Complétion automatique C# à l'aide d'un gestionnaire d'événements personnalisé

Problème :

Une fonctionnalité de saisie semi-automatique est en cours d'implémentation pour une zone de texte, où les résultats proviennent d'une base de données au format "[001] Dernier, Premier Milieu". L'implémentation actuelle nécessite de taper "[001]" pour lancer la recherche, même si le comportement souhaité est d'autoriser la saisie semi-automatique en fonction de la saisie du prénom, par exemple, "John" doit renvoyer "[001] Smith, John D."

Solution :

La fonctionnalité de saisie semi-automatique intégrée en C# prend uniquement en charge la recherche basée sur les préfixes, ce qui la rend inadapté à cette exigence. Une solution de contournement consiste à créer une fonction de saisie semi-automatique personnalisée en gérant l'événement OnTextChanged et en implémentant le comportement souhaité par programme.

Implémentation :

Une ListBox est ajoutée sous la zone de texte et son la visibilité est initialement définie sur false. Lorsque l'utilisateur saisit du texte dans la zone de texte, l'événement OnTextChanged de la zone de texte se déclenche. Le gestionnaire effectue les étapes suivantes :

  1. Efface les éléments existants dans la zone de liste.
  2. Si le texte de la zone de texte est vide, masque la zone de liste.
  3. Parcourt le valeurs dans AutoCompleteCustomSource de la zone de texte.
  4. Si une valeur contient le texte saisi dans la zone de texte, ajoute le valeur à la zone de liste et définit sa visibilité sur true.

Lorsqu'un élément de la zone de liste est sélectionné, l'événement SelectedIndexChanged de la zone de liste est déclenché et le texte de l'élément sélectionné est copié dans la zone de texte. propriété de texte. Ceci termine le processus de saisie semi-automatique et masque la zone de liste.

Exemple de code :

private 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 hideResults()
{
    listBox1.Visible = false;
}

Cette solution fournit un exemple rudimentaire d'une fonctionnalité de saisie semi-automatique personnalisée qui peut être encore améliorée. en fonction d'exigences spécifiques. Cependant, il démontre le principe de gestion de la saisie de texte et de mise à jour dynamique de la liste des valeurs suggérées.

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!

Déclaration:
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