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 :

maîtriser la tabulation


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 234
    Points : 130
    Points
    130
    Par défaut maîtriser la tabulation
    Bonjour,

    Dans ma form, j'ai un control panel, qui est visible selon certaines conditions.
    dans ce panel figurent des champs texBox.

    J'aimerai que lorsque ce panel est visible, la touche tabulation donne le focus uniquement aux textbox du panel sans aller aux autres textbox de la Form.

    Tant qu'à faire j'aimerai éviter d'être obligé de changer la valeur du tabstop de chaque texbox.

    Si quelqu'un connait un moyen plus simple.

    Merci.

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Points : 359
    Points
    359
    Par défaut
    Tu as essayé de capter l'évènement pression sur le clavier dans la fenêtre principale ?
    "Une belle citation est un diamant au doigt de l'homme d'esprit et un caillou dans la main d'un sot."
    Joseph Roux

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Essaye de jouer avec la propriété TabStop du/des Panel.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    Par défaut
    Bonjour,
    je ne sais si c'est plus simple, mais on ne touche pas aux propriétés des TextBox.
    De plus la touche Tab est une touche spéciale.
    Voici une méthode parmi d'autres.

    Au préalable, les TextBox du Panel sont enregistrées dans une liste et abonnées aux événements indiqués :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Dim lstTxtbxInPnl2 As New List(Of Control)
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            For Each txtCrl In Me.Panel2.Controls.OfType(Of TextBox)()
                lstTxtbxInPnl2.Add(txtCrl)
                AddHandler txtCrl.PreviewKeyDown, AddressOf txtBx_PreviewKeyDown
                AddHandler txtCrl.KeyDown, AddressOf txtBx_KeyDown
            Next
     
        End Sub
    Ensuite PreviewKeyDown force l'application à considérer la touche Tab comme normale et donc à traiter KeyDown.
    Qui lui boucle sur la liste des Textbox du Panel concerné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
        Private Sub txtBx_PreviewKeyDown(ByVal sender As Object, ByVal e As PreviewKeyDownEventArgs)
            e.IsInputKey = True
        End Sub
     
        Private Sub txtBx_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
            If e.KeyCode = Keys.Tab Then
                Dim ctrl As Control = Me.ActiveControl
     
                If lstTxtbxInPnl2.Contains(ctrl) Then
                    Dim it As Int32 = lstTxtbxInPnl2.IndexOf(ctrl)
                    If it < lstTxtbxInPnl2.Count - 1 Then
                        ctrl = lstTxtbxInPnl2.Item(it + 1)
                        ctrl.Select()
                    Else
                        ctrl = lstTxtbxInPnl2.Item(0)
                        ctrl.Select()
                    End If
                    e.Handled = True
                End If
            End If
        End Sub
    Nb : les textbox sont entrées dans la liste dans l'ordre de leur création (voir Form*.Designer.vb du projet).

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 234
    Points : 130
    Points
    130
    Par défaut
    Bon, comme il n'existe pas de solution simple et rapide
    Je suis passé par le reglage du tabstop des controles
    en fonction d'un évenement.

    Merci pour vos solutions.

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

Discussions similaires

  1. espace ou tabulation?
    Par caribou_belle dans le forum Langages de programmation
    Réponses: 27
    Dernier message: 05/10/2003, 11h57
  2. tabulation sur champs de saisie
    Par xClyde dans le forum Flash
    Réponses: 2
    Dernier message: 25/09/2003, 16h49
  3. Taille des tabulations dans un TMemo ?
    Par dergen dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/01/2003, 19h38
  4. Comment imprimer des tabulations ?
    Par Invité dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/11/2002, 11h30
  5. [VB6] Touche de tabulation
    Par BernardMatthey dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 26/11/2002, 22h06

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