2010-02-18 6 views
3

Je souhaite disposer d'un TextBox prenant en charge la saisie semi-automatique et permettant aux utilisateurs de saisir plusieurs mots séparés par une virgule ou un point-virgule, offrant des suggestions pour chaque mot. J'ai une norme TextBox avecSaisie semi-automatique par virgule ou par virgule TextBox

textBox.AutoCompleteCustomSource.AddRange(new[] { "apple", "banana", "carrot" }); 
textBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
textBox.AutoCompleteSource = AutoCompleteSource.CustomSource; 

Malheureusement, il ne suggère pour le premier mot. Quelque chose a tapé après cela et il cesse de suggérer.

Je veux être en mesure d'effectuer le scénario suivant:

  1. type "ap"
  2. faites-le suggérer "pomme"
  3. Appuyez sur la virgule
  4. Faites-le remplir « pomme, "avec le curseur après la virgule
  5. type "ba"
  6. Faites-le suggérer "banane"
  7. Appuyez sur la virgule
  8. Faites-le append « banane », entraînant « la pomme, la banane, »

J'ai essayé googler une solution, mais ne l'ai pas eu beaucoup de chance. Cela semble être une fonctionnalité populaire pour les applications Web, mais apparemment pas pour les winforms. Aucune suggestion?

Répondre

0

Vous pouvez implémenter votre propre saisie semi-automatique en écoutant l'événement KeyDown.

2

Je ne crois pas que vous pouvez terminer cette tâche avec seulement les propriétés de construction de texte semi-automatique. Ce que je ferais est de faire une fonctionnalité personnalisée qui vérifie la méthode OnTextChanged pour la zone de texte et décide quoi faire. Certes, cela sera un peu plus complexe par rapport à ce que vous essayiez de faire. Vous devrez décider s'ils tapent une chaîne connue et donner les suggestions d'une manière sélectionnable, ajouter la modification sélectionnée s'ils cliquent dessus, attraper quand ils tapent un délimiteur et ajouter la suggestion actuellement sélectionnée, et vous préparer pour pour ajouter plus de texte et recommencer le processus.

J'espère que quelqu'un d'autre a un moyen plus simple mais sinon, j'espère que cela vous donne une idée de la logique nécessaire. Bonne chance!

Questions connexes