Je travaille en C# avec une zone de texte qui sert d'entrée pour une recherche d'enregistrement de base de données (Access SQL) par numéro d'identification. Je veux être en mesure d'utiliser la saisie semi-automatique dans la zone de texte, mais avec certaines limitations. Le gros problème est que le nombre d'ID dans le système est de l'ordre de milliers. Au lieu de remplir une fois la boîte de saisie semi-automatique, je dois surveiller ce qui se trouve dans la zone de texte et afficher uniquement les suggestions de saisie semi-automatique. quand il y a environ 50 choix ou moins.C# AutoComplete de zone de texte: Limiter à ~ 50 suggestions
Actuellement, je fais cette requête sur chaque KeyDown: SELECT COUNT (*) FROM Table WHERE id LIKE '% TextBox.Text'
Lorsque le nombre est inférieur à 50 je remplir la saisie semi-automatique des résultats de une version d'identification SELECT de l'instruction ci-dessus. Cela m'a conduit à plusieurs problèmes, la plupart semblent être des bizarreries C# Je ne comprends pas. 1) Lorsque j'efface ou que j'ajoute à AutoCompleteCustomSet dans un seul événement KeyDown, la touche enfoncée n'est pas ajoutée à la chaîne (c'est-à-dire que le comportement d'entrée de la zone de texte normal ne se produit pas).
2) J'ai essayé de séparer la mise à jour AutoCompleteCustomeSet d'un événement différent (KeyPress ou KeyUp), mais cela a entraîné un plantage, ou l'affichage de saisie semi-automatique ne s'affichait que brièvement avant d'être masqué. Je me sens comme ce problème doit être commun et je vais juste à ce sujet dans le mauvais sens. Quelqu'un peut-il offrir quelques conseils? Merci!
EDIT: ceci est Windows Forms
EDIT2: Un top 50 sélectionnez ne résout pas le problème que les types d'utilisateurs (et potentiellement backspaces et re-types) les 50 premiers changeront. Vous ne pouvez pas simplement sélectionner TOP 50 à partir de la table WHERE ...?
Est-ce WinForms? WPF? ASP.NET? – LBushkin