Nos WinForms application effectue le chargement paresseux des données pour auto complète d'une zone de texte. Le pseudocode pour ceci est comme suit;Comment chercher des données de manière asynchrone pour une saisie semi-automatique TextBox?
- types d'utilisateurs dans TextBox
- sur la saisie pause, déterminer si nous devons chercher les données complètes auto
- Dans thread de travail, contacter le serveur et récupérer les données
- Invoke au thread de l'interface utilisateur
- Set
textBox.AutoCompleteCustomSource = fetchedAutoCompleteStringCollection;
- Forcer la zone de texte à dérouler c'est déroulant autocomplete.
Je suis actuellement des problèmes aveC# 6. En tant que hack, je fais ce qui suit pour simuler une pression de touche qui fonctionne, mais il ne fonctionne pas dans toutes les situations.
// This is a hack, but the only way that I have found to get the autocomplete
// to drop down once the data is returned.
textBox.SelectionStart = textBox.Text.Length;
textBox.SelectionLength = 0;
SendKeys.Send(" {BACKSPACE}");
Il doit y avoir un meilleur moyen. Je ne peux pas croire que je suis la seule personne à aller chercher des données auto complètes de manière asynchrone. Comment devrais-je faire ça?
EDIT: Un appel Win32 pour provoquer la liste déroulante Auto Complete est acceptable. Ça ne me dérange pas de m'envoyer en l'air si je le dois.
Je n'ai pas essayé votre code, mais il semble bon, donc je vais l'accepter comme répondre. Merci. –