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 :

Probleme vb tabulation et utilisation de button fleches !


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 15
    Par défaut Probleme vb tabulation et utilisation de button fleches !
    Bonjour à tous et à toute...

    Voila je vous explique, j'essaye de créer un programme sous vb avec Visual Studio 2008 et j'aimerais vous demander de l'aide...

    En fait le programme est un peu comme une calculette(c'est un programme de calcul de distance), les utilisateurs doivent rentrer 3 données differente dans 3 textbox differente et ensuite validé et calculer le tout.

    Mais mon but est de créer une application autonome, dans le sens qu'il ne doivent jamais au grand jamais lol toucher au clavier, j'ai donc mis un pavé numérique ainsi que 4 fleches directionnelles.

    Voila donc mnt j'ai mis tout en tabstop=false sauf mes 3 texbox, j'ai numéroté mes textbox en 0,1 et 2 et lorque j'utilise mon vrai clavier en appuyant sur "tab" ca marche nickel, il tourne en boucle sur mes 3 textbox. Mais je n'arrive pas a faire pareille avec mes buttons "fleche haut" et "fleche bas".

    dans mon code j'ai mis ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Bt_flecheBas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt_flecheBas.Click
     
    SendKeys.Send("{tab}")
    Le soucis évidemment c'est qu'il ne fait tabulation qu'une seule fois alors que moi j'aimerais que chaque fois que je clique sur le bouton il passe a la tabulation suivante et qu'au bout il revienne a la premiere !

    J'ai essayé plein de maniére différente, du style mettre une boucle qui change les valeur tabindex des textbox vu qu'a chaque que je clique il se positionne sur le tabindex=0 mais je n'y arrive pas

    Mon autre soucis majeur est les buttons des chiffres, lui donner la valeur d'un chiffre et le mettre dans une textbox ok facile mais vu que j'en ai 3 et que l'utilisateurs doit pouvoir naviguer a sa guise entres elles je n'arrive pas a leurs faire imprimer les chiffre en fonction de la textbox ou se situe le "curseur" (la barre qui clignote quand on écris lol).
    Pareil pour le button avec la fonction Backspace !

    Enfin voila j'espere que j'ai été assez clair, et que vous saurez m'aider

    Merci d'avance

    Seb

  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 : 42
    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
    Pour être honnête, j'ai rien compris. Enfin, pas rien, mais a chaque fois que je crois avoir compris quelque chose, je vois l'inverse juste en dessous:

    qu'il ne doivent jamais au grand jamais lol toucher au clavier, j'ai donc mis un pavé numérique ainsi que 4 fleches directionnelles.
    La va falloir m'expliquer... T'as "créer" (acheter) un clavier qui possèdent que des flèches et des numéros ?

    Le soucis évidemment c'est qu'il ne fait tabulation qu'une seule fois
    C'est à dire ? Tu appuis sur la flèche ca fais tabulation, puis tu re appuies sur la flèche et ça fais plus tabulation ?

    que je clique il se positionne sur le tabindex=0
    Quand je clique sur quoi, quoi se mets sur tabindex = 0 ?

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 706
    Par défaut
    Bonsoir,
    mactwist69 : non, Frimeman a créé un pavé numérique dans son form et on ne se sert que de la souris.
    Enfin je pense...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 15
    Par défaut
    J'ai creer une application windows form,comme quand on ouvre la calculatrice windows,avec des boutons qui simule une entrée clavier mais sans y toucher réelement ! Je veux dire sur la calculette windows il y'a sur la fenetre les chiffre de 0 à 9, la virgule etc etc.. Ben moi c'est pareil, sauf que j'ai mis également 4 fléches directionnelle. Et mon but c'est qu'on puisse tout faire rien qu'en cliquant sur les boutons de l'application.

    Et je veux que ma fleche du bas comme si on faisait tabulation. Et oui éffectivement quand je clique sur mon bouton fleche bas ca fais tabulation, mais si je re clqiue il ne se passe plus rien.

    Je dois changer les valeur de tabulation des textbox car quand on fais tabulation, le curseur se positionne en valeur 0 de tabulation.

    En gros je ne sais pas comment utiliser plusieurs fois un Button.Click.

    Désolé c'est pas facile a expliquer :s

    En Gros c'est comme une calculette windows, mais avec 3 textbox au lieu d'une et un des fleches directionnelles pour se déplacer entre elles.

    Si tu a d'autre question vas y je ferais comme je peux pour m'expliquer..

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 15
    Par défaut
    Citation Envoyé par chrismonoye Voir le message
    Bonsoir,
    mactwist69 : non, Frimeman a créé un pavé numérique dans son form et on ne se sert que de la souris.
    Enfin je pense...
    Exactement

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 15
    Par défaut
    :s

    Bon apparement soit personne ne sait m'aider ou personne ne comprend se que je veux

    En réalité se que je voudrais reussir, c'est que lorsque j'appuye sur un des boutons de mon form, se bouton fasse la meme chose que si j'appuyais sur "tab" de mon clavier.

    Comme j'ai mis avant, dans ce bout de code, je donne "la valeur" de la touche "tab" de mon clavier au bouton Bt_flecheBas de mon form.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Bt_flecheBas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt_flecheBas.Click
     
    SendKeys.Send("{tab}")
     
    End Sub

    Mais ca ne marche pas.

    Si vous pouviez m'aider ca serait surper car j'ai beau chercher partout sur le net et ailleur, je ne trouve rien de clair ou de concluant..

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 706
    Par défaut
    Bonjour,
    la manip ci dessus renvoie le focus au dernier contrôle.
    Pour passer d'un contrôle au suivant, il faut répéter l'opération en l'incrémentant de 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Dim i As Integer = 3
        Private Sub Bt_flecheBas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt_flecheBas.Click
            SendKeys.Send("{tab " & i & "}")
            i += 1
        End Sub
    D'une part ce n'est pas beau et ensuite tous les contrôles seront focusés.
    Si c'est pour passer le focus entre 3 TextBox, je ferais un :
    si tBox1 a le focus, il le passe à tBox2 etc...

  8. #8
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Tu dois parler du focus sur les objets.
    Donc, il suffit de recuperer le tabindex en cours, ensuite de l'incrementer, tout en faisant un refresh de la form apres (je pense que ca doit suffire)

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 15
    Par défaut
    Merci, bon je vais te montrer se que j'ai fais, ca ressemble a rien mais bon :s

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Private Sub Bt_flecheBas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt_flecheBas.Click
     
            SendKeys.Send("{TAB}")
            Dim Num, Num1, Num2 As Integer
     
    If TabIndex = 0 Then
     
                TabIndex = TabIndex + 1
     
                Num = 2
                Num1 = 0
                Num2 = 1
     
                TB_distBarres.TabIndex = Num
                TB_longBarres.TabIndex = Num1
                TB_diagMesuree.TabIndex = Num2
                SendKeys.Send("{TAB}")
            End If
     
    If TabIndex = 1 Then
     
                TabIndex = TabIndex + 1
                TB_correctionV.Text = TabIndex
     
                Num = 1
                Num1 = 2
                Num2 = 0
     
                TB_distBarres.TabIndex = Num
                TB_longBarres.TabIndex = Num1
                TB_diagMesuree.TabIndex = Num2
                SendKeys.Send("{TAB}")
            End If
     
     End Sub

    Avec ca j'arrive en partant de ma textbox du haut a descendre a celle du bas, et je t'avoue je comprend meme pas comment mais bon

    Oui l'idée du focus me semble bien mais je ne vois pas comment cela fonctionne...

    Enfin je continue a chercher un peu partout, je m'enmele un peu aussi...

    Merci en tout cas d'essayer de m'aider

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 15
    Par défaut
    Bon ok j'ai un peu testé les focus, ca donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Bt_flecheBas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt_flecheBas.Click
            If TB_distBarres.Focus() Then
                TB_longBarres.Focus()
            End If
     
            If TB_longBarres.Focus() Then
                TB_diagMesuree.Focus()
            End If
     
            If TB_diagMesuree.Focus Then
                TB_distBarres.Focus()
            End If
    End Sub


    Bon évidemment ca marche sans marcher lol, vu qu'il fait mes 3 If de suite, mon focus ne bouge pas d'un poil :s

    Si j'enleve le 3ie If il place le focus sur la 3ie txtBox(celle du bas)
    Et si j'enleve le 2ie et le 3ie If alors il place bien le focus sur la 2ie txtBox...

    Comment faire pour qu'il fasse mes condition une à la fois et non toutes d'un coup??

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 706
    Par défaut
    Il mettant un Exit Sub avant les end If
    Mais il reste des problèmes.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 15
    Par défaut
    Oui en mettant un Exit Sub avant chaque End If il passe bien de la 1ie à la 2ie TxtBox mais ensuite il reste bloqué sur la 2ie et n'en bouge plus..


    C'est Vraiment désespérant parce que quand j'utilise mon 'vrai' clavier il me suffit d'appuyer sur la touche tab et il passe de l'une a l'autre en boucle sans aucun soucis...

    Est-il vraiment impossible donner la meme fonction qu'une touche de clavier à un Button d'un form?

    Ca parait si simple et c'est si dur d'y arriver !!

    J'ai cherché un peu partout comment coder un clavier visuel mais je n'ai rien trouver de concluant.

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 706
    Par défaut
    voici un truc pour dépanner en attendant de trouver mieux :
    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
        Dim crl As String = "TextBox1"
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            If crl = TextBox1.Name Then
                TextBox2.Focus()
                crl = TextBox2.Name
                Exit Sub
            End If
            If crl = TextBox2.Name Then
                TextBox3.Select()
                crl = TextBox3.Name
                Exit Sub
            End If
            If crl = TextBox3.Name Then
                TextBox1.Select()
                crl = TextBox1.Name
                Exit Sub
            End If
     
        End Sub

  14. #14
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 706
    Par défaut
    La grosse différence entre une touche appuyée du clavier et un bouton cliqué sur le form est le changement du focus qui passe biensûr sur le bouton.
    Il faut donc enregistrer le dernier TextBox l'ayant eu.
    Voilà ce que j'ai trouvé de plus concis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Dim crl As TextBox
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Select Case crl.Name
                Case TextBox1.Name : TextBox2.Select()
                Case TextBox2.Name : TextBox3.Select()
                Case TextBox3.Name : TextBox1.Select()
            End Select
        End Sub
     
        Private Sub TextBox_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Enter, TextBox2.Enter, TextBox3.Enter
             crl = CType(sender, TextBox)
        End Sub

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 15
    Par défaut
    Bonjour..

    Voila j'ai trouvé une solution à mon soucis, qui fonctionne. Dites moi se que vous en pensez...

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Dim DetTab As Integer
        Dim DetTab1 As Integer
     
    Private Sub Bt_flecheHaut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt_flecheHaut.Click
     
            If DetTab1 = 0 Then
                TB_diagMesuree.Focus()
                DetTab1 = DetTab1 + 1
                DetTab = 2
                Exit Sub
            End If
     
            If DetTab1 = 1 Then
                TB_longBarres.Focus()
                DetTab1 = DetTab1 + 1
                DetTab = 1
                Exit Sub
            End If
     
            If DetTab1 = 2 Then
                TB_distBarres.Focus()
                DetTab1 = DetTab1 - 2
                DetTab = 0
                Exit Sub
            End If
     
        End Sub
     
     
        Private Sub Bt_flecheBas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt_flecheBas.Click
     
            If DetTab = 0 Then
                TB_longBarres.Focus()
                DetTab = DetTab + 1
                DetTab1 = 2
                Exit Sub
            End If
     
            If DetTab = 1 Then
                TB_diagMesuree.Focus()
                DetTab = DetTab + 1
                DetTab1 = 1
                Exit Sub
            End If
     
            If DetTab = 2 Then
                TB_distBarres.Focus()
                DetTab = DetTab - 2
                DetTab1 = 0
                Exit Sub
            End If
     
        End Sub

    Avec ca, je peux naviguer entre mes 3 txtBox de haut en bas et vice versa, tout en ayant la bonne continuité si je fais bas puis haut et vice versa.

    J'aimerais mnt pouvoir naviguer dans les txtBox de droite à gauche et vice versa avec l'aide de Button_Click droite et gauche.

    Savez vous m'aider?

    Merci d'avance

  16. #16
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    Pour voyager entre textbox ou autre objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Private Sub TextBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown, TextBox2.KeyDown
     
    If e.KeyCode = Keys.Down Then SendKeys.Send("{TAB}") ' Passe au Tabindex suivant
    If e.KeyCode = Keys.Up Then SendKeys.Send("+{TAB}") ' Passe au Tabindex précédent

Discussions similaires

  1. probleme de confirmation d'utilisation d'un cgi
    Par tarentaise dans le forum Web
    Réponses: 5
    Dernier message: 31/07/2007, 12h53
  2. Probleme de tabulation
    Par nabil_abada dans le forum Delphi
    Réponses: 4
    Dernier message: 30/06/2006, 10h42
  3. Réponses: 4
    Dernier message: 28/05/2006, 22h11
  4. Probleme XML/XSL et utilisation d'ajax
    Par titou250 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 16/03/2006, 18h21

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