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

VB.NET Discussion :

Même Event pour Tab et Entrée


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Billets dans le blog
    1
    Par défaut Même Event pour Tab et Entrée
    Bonjour,

    Je voudrais savoir si il est possible que l'Event de tab (celui qui permet de changer de tabIndex rapidement) peut-être utiliser avec la touche entrée?

    Sans avoir à mettre pour chaque textBox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if keys.keycode = keys.enter then
    txtboxTrux.focus()
    end if
    Merci!
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  2. #2
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut Réponse
    Bonjour,

    Il existe dans les propriétés du formulaire la propriété KeyPreview (a mettre à True)

    Une fois cela fait, tu peux utiliser l’événement KeyDown du formulaire, pour intercepter la touche.
    Une fois l’événement passé, l’événement "normal" du Control se déclenche.

    L'idée (je n'ai pas testé), serait de remplacer le code de la touche Entrée par celui du Tab. A essayer.

  3. #3
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Billets dans le blog
    1
    Par défaut
    Comment puis-je lui passer le code de tab ?
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  4. #4
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Citation Envoyé par Ozeil Voir le message
    Comment puis-je lui passer le code de tab ?
    Sur l'idée de mactwist69 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
            If e.KeyCode = Keys.Enter Then
                SendKeys.Send("{TAB}")
            End If
        End Sub
    Mais le hic, c'est qu'en faisant ça, tu court-circuites tous les fonctionnements basé sur Enter pour tous les Controls de ta Form (elle comprise). (Ex: Le focus est sur le bouton "Valider", on tape Entrée, le Focus repartira sans valider, idem auto-completion des combobox, idem pour le fonctionnement d'un DGV, etc etc) Je pense que tu vas partir sur un casse-tête ...

    A la rigueur tu peux rajouter une couche entre les Controls windows et ton appli : tu crées ta classe de textbox, tu la fais hériter de la classe system.windows.form.textbox, et tu n'as qu'à coder l'event KeyDown de la textbox (voir code du dessus). Par conséquent toutes tes textboxs en profiteront, et les boutons ne seront pas impactés par le fonctionnement.

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Bonjour,

    +1 pour l'héritage du control TextBox.
    En revanche, plutôt que d'utiliser SendKeys.Send("{TAB}"), il serait préférable d'utiliser Control.SelectNextControl.

  6. #6
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par _Ez3kiel Voir le message
    Sur l'idée de mactwist69 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
            If e.KeyCode = Keys.Enter Then
                SendKeys.Send("{TAB}")
            End If
        End Sub
    Mais le hic, c'est qu'en faisant ça, tu court-circuites tous les fonctionnements basé sur Enter pour tous les Controls de ta Form (elle comprise). (Ex: Le focus est sur le bouton "Valider", on tape Entrée, le Focus repartira sans valider, idem auto-completion des combobox, idem pour le fonctionnement d'un DGV, etc etc) Je pense que tu vas partir sur un casse-tête ...

    A la rigueur tu peux rajouter une couche entre les Controls windows et ton appli : tu crées ta classe de textbox, tu la fais hériter de la classe system.windows.form.textbox, et tu n'as qu'à coder l'event KeyDown de la textbox (voir code du dessus). Par conséquent toutes tes textboxs en profiteront, et les boutons ne seront pas impactés par le fonctionnement.
    Oui je pensais à cela justement que tous mes contrôles sur les boutons et autres seraient court-circuités ...

    J'ai testé le :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub module_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
                If e.KeyCode = Keys.Enter Then
                    SendKeys.Send("{TAB}")
                End If
            End Sub
    Mais il ne fonctionne pas.
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  7. #7
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Dans quelle classe est placée cette méthode ? (A quoi correspond 'Me' ici : Un form ou un module ?) -> Si tu suis l'idée de mactwist69, il faut que ce code soit dans ta Form.vb et que cette dernière ai .KeyPreview = True.

    Ps: Prend en compte la judicieuse remarque d'ebastien et privilégie Control.SelectNextControl plutôt que SendKeys.Send("{TAB}").

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/03/2014, 10h56
  2. même code pour deux Events
    Par noftal dans le forum VB.NET
    Réponses: 4
    Dernier message: 02/09/2013, 21h39
  3. Réponses: 7
    Dernier message: 27/11/2012, 23h59
  4. [css] Même style pour 2 classes diffs ?
    Par AlphaYoDa dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 19/03/2005, 22h29
  5. Réponses: 9
    Dernier message: 10/08/2004, 17h13

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