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 :

[VB 2005] Combobox, focus, clavier


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Par défaut [VB 2005] Combobox, focus, clavier
    Bonjour,

    J'aimerais savoir s'il est possible simplement d'empêcher l'élément d'un combobox de changer lorsqu'une touche de clavier est appuyée et que cette combobox a le focus.
    Par exemple, si ma combobox a plusieurs éléments, si elle a le focus et que je tape sur "N" le premier élément commençant par N est affiché et sélectionné.
    Or, j'ai affecté diverses touchjes de raccourcis, ils sont pris en charge, mais le changement de la combobox est lui aussi réalisé.
    Je pourrais, sur mon code de gestion de raccourci, tester si chacun des chacune des comboboxes a le focus, et ainsi gérer cela, mais je me demandais s'il n'y avait pas plus simple.

    Merci !

    Manu

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 240
    Par défaut
    Ca doit etre faisable par la propriété keypreview de ta form
    Si celle ci est a true, la form récupère tous les keydown avant les controles enfants.
    Dès lors dans l'event MaForm.Keydown tu teste si ta combo a le focus ou pas et tu code en conséquence ...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Par défaut
    Salut,

    Oui, la propriété keypreview est à true sur ma form, et je gère tous les raccourcis par l'événement keydown.
    Ta solution est celle que j'avais en tête. A priori, il n'y a rien de plus direct.
    Je vais voir le plus simple en code à mettre. Je teste et je refais surface.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Par défaut
    J'ai fait les tests et... Je n'arrive pas à empêcher le changement dans la combobox.
    J'ai même essayé de passer enabled à false sur l'événement maform.keydown, mais rien n'y fait, le changement d'index se produit.
    Je ne peux pas faire perdre le focus au combobox (readonly), je me retrouve bloqué. LA seule solution serait de changer mes raccourcis, mais cela n'est pas possible.
    Quelqu'un aurait une idée?

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 240
    Par défaut
    1 - Faudrait voir le code de ton Event Form.keydown ...
    2 - Focus et Focused ...
    Focused est une propriété (effectivement en ReadOnly) qui te renseigne sur l'état du contrôle quant au focus
    C'est effectivement cet propriété qu'il te faut utiliser pour savoir si ton combo a le focus.
    Focus par contre est une fonction (donc en aucun cas readOnly !) et te permet d'envoyer le focus sur n'importe quel contrôle
    3 - "Passer enabled à false ..."
    Si tu veux parler d'annuler le keydown, c'est e.Handle = true

    A priori, si tu souhaite courcircuiter le keydown quand il s'agit d'une touche raccourci (que ce soit un combo ou autre chose qui ait le focus), il te suffit, après avoir géré ton raccourci et avant de quitter Keydown, de supprimer l'entrée clavier par e.Handled = true.

    Si tu souhaites supprimer l'entrée clavier uniquement quand un combo a le focus, ca pourrait être qlq chose comme ca :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each C As Control In Me.Controls
        If C.Focused AndAlso C.GetType.Name = "ComboBox" Then 
    	e.Handled = True
    	exit for
        End If
    Next

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Par défaut
    Salut,

    Voilà mon code dans l'event keydown (pour un raccourci, le reste est identique)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                Case Keys.NumPad1
                    e.Handled = True
                    lblV1.Focus() 'je donen le focus à un autre control
    MA FONCTION 'je lance une fonction
    Le raccourci fonctionne bien, la fonction est lancée. Mais si le combobox a le focus, aputer sur "1" change aussi la selecteditem de cette combobox. Le focus est récupéré par lblV1 après, et non avant ce changement.
    Même en ajoutant ton code, cela déclenche tout de même le changement.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 240
    Par défaut
    Autant pour moi ... effectivement j'ai testé e.handled = true sur KeyDown et l'entrée clavier passe quand même ...
    Essaye avec un e.handled = True sur KeyPress égallement et ca devrait marcher

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 240
    Par défaut
    Oups!... il y a aussi un e.SuppressKeyPress dans le keydown
    ... bizare que tu ne l'ai point vu ...

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Par défaut
    Salut,

    Je teste ça ce soir et je donne des news aussitôt.
    Merci beaucuop!

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Par défaut
    Désolé du retard...

    Ca marche impec comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                Case Keys.NumPad1
                    e.Handled = True
                    e.SuppressKeyPress = True
    'Ici mon code pour attribuer une action au raccourci
    Je n'avais pas du tout repéré le e.SuppressKeyPress de l'event keydown...

    Merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET 2005] combobox : SelectedIndex ne se met pas à jour
    Par Kropernic dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/11/2008, 12h07
  2. ComboBox & Focus
    Par matfeb dans le forum IHM
    Réponses: 2
    Dernier message: 27/02/2008, 14h03
  3. [VB.NET 2005] Combobox Lié avec valeur NULL
    Par Thierryx dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/08/2006, 17h38
  4. [VB.net 2005]ComboBox.DataSource ignore l'ArrayList source
    Par Macintoc dans le forum Windows Forms
    Réponses: 1
    Dernier message: 22/08/2006, 19h31
  5. Réponses: 7
    Dernier message: 23/06/2006, 13h38

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