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 :

Pas d'accès à ma seconde form pour répondre


Sujet :

VB.NET

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Par défaut Pas d'accès à ma seconde form pour répondre
    Bonjour
    Je fais un prog pour ma fille pour l'aider à apprendre ses tables de multiplication (je suis rouillée car j'ai pris 3 ans de congé parental et cela m'aide à m'y remettre )

    Ma première form s'affiche niquel :

    Elle demande à l'utilisateur quelle table il veut tester (pour l'instant je me suis limité à la table 1 pour tester mon prog)

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    Public Class Form1
        Public t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 As Integer
        Public tabnombreArray() As Integer = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            'initialisation des variables 
            t1 = 0
            t2 = 0
            t3 = 0
            t4 = 0
            t5 = 0
            t6 = 0
            t7 = 0
            t8 = 0
            t9 = 0
            t10 = 0
     
            'test si la table est sélectionnée pour le quizz
            If CheckBox1.Checked Then
                t1 = 1
            End If
            If CheckBox2.Checked Then
                t2 = 2
            End If
            If CheckBox3.Checked Then
                t3 = 3
            End If
            If CheckBox4.Checked Then
                t4 = 4
            End If
            If CheckBox5.Checked Then
                t5 = 5
            End If
            If CheckBox6.Checked Then
                t6 = 6
            End If
            If CheckBox7.Checked Then
                t7 = 7
            End If
            If CheckBox8.Checked Then
                t8 = 8
            End If
            If CheckBox9.Checked Then
                t9 = 9
            End If
            If CheckBox10.Checked Then
                t10 = 10
            End If
     
            'test aucune table de sélectionnée
            If (t1 = 0 And t2 = 0 And t3 = 0 And t4 = 0 And t5 = 0 And t6 = 0 And t7 = 0 And t8 = 0 And t9 = 0 And t10 = 0) Then
     
                Dim Message As String = "Vous n'avez pas sélectionné de table ? "
                Dim Caption As String = "Erreur"
                Dim Buttons As MessageBoxButtons = MessageBoxButtons.OK
     
                'affichage d'un message
                MessageBox.Show(Message, Caption, Buttons)
            End If
     
            Form2.Show()
        End Sub
     
    End Class
    Dans ma 2ème form, je veux afficher dans label 1 , la formule à trouver (exemple : 1*5 = ) , le prog calcule la solution et la compare à la réponse

    Pour l'instant j'essaye de l'empêcher de continuer tant qu'il ne trouve pas la bonne réponse mais après je voudrais lui donner 5 seconde pour trouver sinon cela s'affiche perdu (2 secondes) et on poursuit avec un autre nombre.

    Mon problème est que je n'ai pas accès à ma 2ème form, je n'arrive pas à entrer dans ma form pour taper ma solution et même pire le label n'affiche rien !! Comme je n'arrive pas à entrer dans ma form cela fait une boucle sans fin et je ne sais pas comment faire ??? Une idée serait très bienvenue !!

    J'ai testé en mettant un messagebox, cela fait s'arrêter ma boucle mais je n'ai toujours pas accès à ma form et donc à mon textbox, par contre je vois (quand je met la vérification après ma boucle until, que la boucle for se fait bien...)

    Je fais une erreur quelque part mais où ???
    Merci de prendre le temps de m'éclairer de vos lumières.

    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
    Public Class Form2
        Dim solution, reponse As Integer
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
     
            For i As Integer = 0 To 10
     
                solution = Form1.tabnombreArray(i) * Form1.t1
                Label1.Text = Form1.tabnombreArray(i).ToString + " * " + Form1.t1.ToString
     
                 Do Until reponse = solution
     
                    reponse = Val(TextBox1.Text)
     
                    If (solution = reponse) Then
                        Label2.Text = "GAGNE"
                    Else
                        Label2.Text = "PERDU"
                    End If
                Loop
     
     
            Next
     
        End Sub
     
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            End
        End Sub
     
    End Class

  2. #2
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    Bonjour,

    il y a des choses que je ne comprend pas...
    pourquoi faire la chose suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    solution = Form1.tabnombreArray(i) * Form1.t1
    tu a déclaré tes variables en public... elles sont donc accessibles de n'importe ou dans le programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Public t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 As Integer
        Public tabnombreArray() As Integer = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
    Ensuite,
    d'après ton code,
    je dirais que la boucle Do Until boucle à l’infini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
            For i As Integer = 0 To 10 '<- 0 à 9 t'évitera des erreurs
     
                solution = Form1.tabnombreArray(i) * Form1.t1
                Label1.Text = Form1.tabnombreArray(i).ToString + " * " + Form1.t1.ToString
     
                 Do Until reponse = solution
                    reponse = Val(TextBox1.Text)
                    If (solution = reponse) Then
                        Label2.Text = "GAGNE"
                    Else
                        Label2.Text = "PERDU"
                    End If
                Loop
            Next
    Je m'explique,
    tu compare reponse = solution alors que réponse n'a toujours pas reçu de valeur... ton test part en vrille complet

    Voila, je ne sais pas si j'ai répondu à tout,
    mais tu a déja de quoi à avancer je pense

  3. #3
    Membre chevronné
    Homme Profil pro
    Caféinomane
    Inscrit en
    Septembre 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Caféinomane

    Informations forums :
    Inscription : Septembre 2011
    Messages : 202
    Par défaut
    Bonsoir,

    Dans votre boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                 Do Until reponse = solution
     
                    reponse = Val(TextBox1.Text)
     
                    If (solution = reponse) Then
                        Label2.Text = "GAGNE"
                    Else
                        Label2.Text = "PERDU"
                    End If
                Loop
    vous n'attendez pas que l'utilisateur saisisse une valeur. Aussi la boucle tourne à grande vitesse et à l'infini.

    Il y aurait des solutions pour colmater ça, mais je pense que le mieux est de revoir complètement la structure de votre code.

    Supposons que votre "Button1" soit le bouton de validation de la réponse. Il faudrait contrôler la réponse saisie dans l'évènement "click", puis incrémenter une variable pour vérifier si le nombre de tentatives est épuisé. En parallèle, un composant de type "Timer" pourrait contrôler le temps alloué au joueur.

    Mais l'agencement de tout ces éléments tient plus du tutoriel que du dépannage

  4. #4
    Membre habitué
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Par défaut
    re bonjour
    merci pour tes réponses, effectivement
    les form1 ne devraient pas être nécessaires sauf que quand je les enlève il me met une erreur comme quoi les variables ne sont déclarées, solutionné par la mise en place du form1 devant mes variables...

    en ce qui concerne le do until , je l'ai rajouté après de nombreux essais et j'ai oublié de le remettre avant le test !!
    Mais cela ne résouds pas mon problème, je n'ai toujours pas accès à ma form !!!

    j'ai aussi essayé ça :
    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
    For i As Integer = 0 To 10
     
                solution = Form1.tabnombreArray(i) * Form1.t1
                Label1.Text = Form1.tabnombreArray(i).ToString + " * " + Form1.t1.ToString
     
                reponse = Val(TextBox1.Text)
     
     
                    If (solution = reponse) Then
                        Label2.Text = "GAGNE"
                    Else
                        Label2.Text = "PERDU"
                    End If
     
     
     
            Next
    sanns plus de succès, je n'ai toujors pas accès ma 2ème form, je la vois mais je ne peux pas entrer dedans avant la fin de ma boucle for et là evidemment j'ai perdu ....

  5. #5
    Membre chevronné
    Homme Profil pro
    Caféinomane
    Inscrit en
    Septembre 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Caféinomane

    Informations forums :
    Inscription : Septembre 2011
    Messages : 202
    Par défaut
    C'est parce que vous partez du principe que là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                reponse = Val(TextBox1.Text)
    Le programme va s'arrêter et attendre une saisie. Hors ce n'est pas le cas, le code passe à la ligne suivante instantanément !

  6. #6
    Membre habitué
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Par défaut
    merci franticfranz


    Effectivement je voyais bien que je ne laisse pas le temps à l'utilisateur, j'ai essayé avec des boutons et des timers, même avec une barre de progression (qui fonctionnait bien), mais je voyais ma form sans pouvoir avoir accès à son contenu, et donc sans pouvoir accéder au textbox !!

    Comme je ne vois pas pourquoi je n'ai pas accès à la form, je vais refaire entièerment le prog sur un nouveau projet (peut-être ai-je modifié une propriété quelque part sans m'en souvenir)
    c'est peut-être cela la solution, je vais revoir mon prog comme vous le dites, merci d'avance et je vous tiens au courant de la suite dès que j'ai fait les modifications.

    bye

  7. #7
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    c'est plus correct sans la boucle until
    *tjrs ce soucis de Form1 mais bon*

    tu a tjrs la possibilité de faire une tempo à la mano comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Threading.Thread.Sleep(1000) ' Sleep for 1 second
    *a adapter le code*

  8. #8
    Membre habitué
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Par défaut
    merci hunteshiva

    j'ai essayé le tempo pour tester mais j'ai toujour le même problème pas d'accès à la form....
    c'est rageant

    Si quelqu'un a une idée de la "./%./¨./%./.¨!:::;,!;:$**" que j'ai pu faire, merci d'avance :

  9. #9
    Membre chevronné
    Homme Profil pro
    Caféinomane
    Inscrit en
    Septembre 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Caféinomane

    Informations forums :
    Inscription : Septembre 2011
    Messages : 202
    Par défaut
    Voilà peut-être un début de piste (non testé). Mais on ne gère pas le chronomètre qui limite le temps pour répondre :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Public Class Form1
        Public t1, t2, t3, t4, t5, t6, t7, t8, t9, t10 As Integer
        Public tabnombreArray() As Integer = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            'initialisation des variables 
            t1 = 0
            t2 = 0
            t3 = 0
            t4 = 0
            t5 = 0
            t6 = 0
            t7 = 0
            t8 = 0
            t9 = 0
            t10 = 0
     
            'test si la table est sélectionnée pour le quizz
            If CheckBox1.Checked Then
                t1 = 1
            End If
            If CheckBox2.Checked Then
                t2 = 2
            End If
            If CheckBox3.Checked Then
                t3 = 3
            End If
            If CheckBox4.Checked Then
                t4 = 4
            End If
            If CheckBox5.Checked Then
                t5 = 5
            End If
            If CheckBox6.Checked Then
                t6 = 6
            End If
            If CheckBox7.Checked Then
                t7 = 7
            End If
            If CheckBox8.Checked Then
                t8 = 8
            End If
            If CheckBox9.Checked Then
                t9 = 9
            End If
            If CheckBox10.Checked Then
                t10 = 10
            End If
     
            'test aucune table de sélectionnée
            If (t1 = 0 And t2 = 0 And t3 = 0 And t4 = 0 And t5 = 0 And t6 = 0 And t7 = 0 And t8 = 0 And t9 = 0 And t10 = 0) Then
     
                Dim Message As String = "Vous n'avez pas sélectionné de table ? "
                Dim Caption As String = "Erreur"
                Dim Buttons As MessageBoxButtons = MessageBoxButtons.OK
     
                'affichage d'un message
                MessageBox.Show(Message, Caption, Buttons)
            End If
     
            Form2.tentative = 0
            Form2.Show()
        End Sub
     
    End Class
    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
    Public Class Form2
        Dim solution, reponse As Integer
        public tentative as Integer
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
                 solution = Form1.tabnombreArray(i) * Form1.t1
                Label1.Text = Form1.tabnombreArray(i).ToString + " * " + Form1.t1.ToString
     
                    reponse = Val(TextBox1.Text)
     
                    If (solution = reponse) Then
                        Label2.Text = "GAGNE !!!"
                    Else
                        Label2.Text = "Mauvaise réponse"
                        tentative = tentative + 1
                        if(tentative>9) then
                            msgbox("Perdu ! La bonne réponse était " & solution.ToString)
                            me.close()
                        end if
                    End If
     
     
     
        End Sub
     
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            End
        End Sub
     
    End Class

Discussions similaires

  1. Solution pour ne pas voir derrière un user form
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 05/05/2008, 10h27
  2. Pas d'accès au code sur un Form
    Par stigma dans le forum IHM
    Réponses: 1
    Dernier message: 22/04/2008, 14h13
  3. Réponses: 2
    Dernier message: 20/05/2007, 11h39
  4. Idées pour une gestion de droits d'accès a des Forms ?
    Par sfxElrick dans le forum Composants VCL
    Réponses: 17
    Dernier message: 26/01/2005, 16h00

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