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 :

[C#] Listbox et touche


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Halobox
    Invité(e)
    Par défaut [C#] Listbox et touche
    Bonjour a tous



    J'aimerai bien avoir quelques conseils pour rajouter une fonction a mon programme :

    Ce serait pour que lorsque que l'on a cliqué dans la listbox", si l'on presse une lettre, ca va au prochain élément de la listbox qui comment par cette lettre.





    Je n'est pas trouvé l'évènement qui permet de le faire.


    Merci d'avance & A+

  2. #2
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void listbox1KeyPress(object sender, KeyPressEventArgs e)
    {
       ListBox lb =  (ListBox) sender;
       int position = lb.FindString(e.KeyChar.ToString());
       lb.SelectedIndex = position;
    }

  3. #3
    Halobox
    Invité(e)
    Par défaut
    J'ai ajouter ca dans le programme et apres pour l'appel (c'est la que ca doit foirer, puisque cela ne fonctionne pas), j'ai mis ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.listBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.listBox1_KeyPress);
    dans le designer, est-ce bon ? car si oui la listbox reconnais bien l'appuie sur la touche, mais la selection disparait seulement.



    Merci de ton aide.

  4. #4
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Tu veux dire que la liste est longue est que la selection s'est bien faite mais n'est pas rendu visible :
    ou as-tu verifier si FindString ne renvoyez pas -1 (non trouvé) :

  5. #5
    Halobox
    Invité(e)
    Par défaut
    Non la selection n'est pas faite dutout, et oui le position renvoyé est égal à -1.

  6. #6
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Citation Envoyé par Halobox
    Non la selection n'est pas faite dutout, et oui le position renvoyé est égal à -1.
    debuggues et verifies le KeyChar envoyé à la méthode FindString qui semble ne pas trouver tout simplement dans la liste un item commençant par ce caractère

    en attendant améliore le code en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void listbox1KeyPress(object sender, KeyPressEventArgs e) 
    { 
       ListBox lb =  (ListBox) sender; 
       int position = lb.FindString(e.KeyChar.ToString()); 
       if (position > -1)
        { lb.SelectedIndex = position;}
    }

  7. #7
    Halobox
    Invité(e)
    Par défaut
    Heu je ne sais pas trop comment faire dans VS, mais je vais trouver, mais je doit détecter quoi au debuggage.


    Merci

  8. #8
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    1. point d'arrêt sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int position = lb.FindString(e.KeyChar.ToString());
    2. Execution
    3. A l'arrêt : espions sur e.KeyChar et position
    4. pas à pas (je sais plus si c'est F8 ou F11 verifies)

  9. #9
    Halobox
    Invité(e)
    Par défaut
    Bah j'ai mis les 2 point rouge autour de


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void listBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                ListBox lb = (ListBox)sender;
                int position = lb.FindString(e.KeyChar.ToString());
                lb.SelectedIndex = position;
                MessageBox.Show(position.ToString());
            }
    Et apres^étape par étape et tout se passe sans erreur ca met juste -1

  10. #10
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    je n'ai pas dit qu'il y a une erreur, je dis que peut être le caractère que tu tapes au clavier n'est pas retrouvé comme première lettre d'un membre de la liste et pour cela tu devais verifer la valeur de e.KeyChar et si elle correspond bien à ce que tu as frappé au clavier

  11. #11
    Halobox
    Invité(e)
    Par défaut
    Oui e.KeyChar contient bien la lettre tapée, je ne compred pas , j'ai aussi essayer de metter un start index a genre 0 ou 1 et pareil.



  12. #12
    Halobox
    Invité(e)
    Par défaut
    Nan c'est bon, merci beaucoup, enfaite ca fonctionne, tous les items de ma listbox commencent par un espace.



    Merci encore.

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/11/2010, 11h02
  2. touche raccourci dans LIstbox
    Par fmris dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/06/2008, 11h22
  3. DrawItem d'un listbox...
    Par scorpiwolf dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/06/2007, 16h50
  4. [Listbox] ScrollBar Horizontal
    Par haleem dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/04/2005, 08h53
  5. Shortcut avec plusieurs touches
    Par scorpiwolf dans le forum C++Builder
    Réponses: 4
    Dernier message: 06/07/2002, 16h57

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