Question

J'essaie de créer une zone de liste déroulante qui se comporte un peu comme la barre Awesomebar de Firefox 3, avec le comportement suivant:

  1. Tapez le texte
  2. Rappeler les résultats de manière asynchrone
  3. Haut et bas sélectionne les résultats dans la liste, BUT laisse le texte saisi dans la zone de saisie de sorte que l'utilisateur puisse continuer à modifier ses résultats pour limiter le jeu de résultats différemment
  4. Entrée déclenche un événement que le formulaire parent va gérer

Les résultats et le filtrage asynchrones fonctionnent, mais je ne dispose pas d'une méthode efficace pour afficher et sélectionner les résultats.

Une liste déroulante remplit automatiquement la zone de saisie avec ce qui est sélectionné lorsque vous utilisez la flèche vers le bas. Échoue # 3.

J'ai les contrôles DevExpress, mais leur liste déroulante fait la même chose et je ne vois pas comment remplacer non plus.

Un LookupEdit ne permet pas de taper des commandes arbitraires. PopupContainerEdit ne le fait pas non plus.

Je veux un comportement qui ressemble à une zone de texte avec une zone de liste en dessous, et les événements haut / bas de la zone de texte sont transmis à la zone de liste. Mais si j'essaie de créer un contrôle personnalisé combinant les deux, je ne sais pas comment "flotter". la zone de liste comme le menu déroulant d’une zone de liste déroulante normale.

Des indices très appréciés!

Était-ce utile?

La solution

Vous devrez peut-être utiliser une zone de texte au lieu d'une liste déroulante, car utiliser les touches de direction permet de sélectionner des valeurs dans la liste des combinaisons et de remplacer votre valeur actuelle. En utilisant la zone de texte, vous pouvez rechercher l'événement TextChanged et stocker la valeur actuellement saisie en remplaçant l'événement KeyPress afin de collecter et de stocker les clés saisies par l'utilisateur.
Votre liste de valeurs contextuelle devrait être auto-dessinée dans l'événement paint.

Cela peut sembler excessivement compliqué, mais vous devrez probablement abandonner le contrôle combo et implémenter vous-même certaines de ses fonctions.

Autres conseils

J'utilise le contrôle de saisie semi-automatique de Skybound. C'est gratuit. Il peut être personnalisé afin qu'il puisse se rapprocher du comportement de la barre Awesome.

http://dev.skybound.ca/Products/AutoComplete/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top