IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

ComboBox choix dynamique


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    quelconque
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : quelconque

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Par défaut ComboBox choix dynamique
    Bonjour,

    Je souhaite modifier le comportement d'une comboBox ( WinForm) pour que les choix possible changent au fur et à mesure des lettres saisie un peu comme le mode suggest.

    Seulement voilà il y'a un lézard dans l'affaire, lorsque je tape les lettres trop vite au clavier les lettres s'inverse dans la zone de saisie.
    Pour changer dynamiquement le contenu des choix, j'utilise l'event TextChanged.
    Voici le contenu de l'event en question

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SendKeys.Send("{End}");
    if (box.Text.Length > 2) {
        box.Items.Clear();
        box.Items.AddRange( query(box.Text).Cast<object>().ToArray() );
        box.DroppedDown = true;
    }
    Hors systématiquement la 2ème lettre du mot que je tape après la limite du if, se retrouve en première position.
    Par exemple ici on est censé rentrer dans le if que si le mot fait au moins 3 caractères dans ce cas c'est la 5ème lettre qui se retrouve au début.
    Ca fait plusieurs jour que je cherche mais sans résultat vraiment concret.

    J'envoie des SendKeys pour faire en sorte que lorsque un mot est sélectionné par la box celui ci ne reste pas sélectionné.
    Ce problème ne se pose que lorsque je tape trop vite les caractères si je tape pas trop vite ça passe.
    C'est comme s'il y avait un autre thread/event qui modifié la position du curseur.

    Si vous avez des pistes de travail à creuser je suis preneur.

    Merci.

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    C'est parce que tu efface le contenu que tu as ce comportement.
    Le Clear va également effacer le contenu de la zone saisissable et forcément la prochaine lettre tapée après le Clear sera en première position.

    Il me semble que de tout manière le comportement que tu cherche à obtenir est natif sur une combo en réglant quelques propriétés
    - DropDownStyle sur DropDown
    - AutoCompleteMode sur Suggest
    - AutoCompleteSource sur ListItem

    Edit : je viens de faire le test.
    Je te confirme que c'est natif en winform

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    quelconque
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : quelconque

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Par défaut
    Bonjour,

    Merci popo pour ton aide, je ne savais pas que le clear() concernais aussi la zone de saisie.

    J'ai pensé à utiliser le mode suggest mais il ne répond pas vraiment à ce que je cherche à faire.

    En fait je veux pouvoir par exemple à la première recherche, je veux les mots qui commence par PRO jusque là le mode suggest rempli bien son rôle mais ensuite par exemple je veux pouvoir faire une autre recherche par exemple chercher tous les mots commençant POP mais je veux quand même garder dans ma liste de suggestion les résultats de la première recherche qui sont les mots commençant par PRO.

    Pour le moment j'ai remplacé addRange() par insert() et ça à l'air de faire à peu près ce que je veux mais ça créer des effets de bord mais c'est moins embêtant.

    Je vais tout de même voir si en utilisant la solution que tu as proposé, je pourrais pas ajouter des suggestions qui n'ont rien à voir avec la recherche courante.
    Sur ce je vais lire de la doc.

    Merci encore pour ton aide.

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Quelqu'un t'a demandé d'avoir ce comportement spécifique ou c'est juste une idée comme ça pour essayer ?

    Si c'est juste une idée comme ça, je te suggère de l'abandonner pour trois raisons :
    1. Si je fait une erreur de frappe, ce ne sera pas considéré comme tel
    2. A force de garder les suggestions, tu va te retrouver avec une liste complète
    3. Ce n'est pas un comportement habituel pour un combo et ça risque de perturber l'utilisateur plus qu'autre chose.

Discussions similaires

  1. Liste de choix dynamique
    Par f0nskar dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 26/06/2007, 15h16
  2. ComboBox à choix multiple
    Par andreditdd dans le forum Delphi
    Réponses: 11
    Dernier message: 17/06/2007, 20h53
  3. [FLASH MX2004 pro] Combobox - addItem dynamique
    Par sanosuke85 dans le forum Flash
    Réponses: 4
    Dernier message: 08/01/2007, 14h08
  4. Choix dynamique de version de librairie
    Par Gloubie dans le forum C
    Réponses: 22
    Dernier message: 27/02/2006, 16h08
  5. Réponses: 10
    Dernier message: 04/05/2004, 16h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo