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

Développement Windows Discussion :

Event sur le changement d'une variable de type Booléen


Sujet :

Développement Windows

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 54
    Par défaut Event sur le changement d'une variable de type Booléen
    Bonjour,

    Je suis en train de réaliser un logiciel de test d'équipement en VB. Pour tester chaque équipement je dois réaliser deux tests. Le premier test consiste à faire un "ping" vers l'équipement et le deuxième test consiste à faire une inspection visuelle. Pour ce dernier test, l'utilisateur est guidé via une windows form qui lui permet de cocher si tout est OK ou NOK et il peut laisser un commentaire. Si c'est deux tests sont correct, il y a une case d'une checklistbox qui se coche sur la windows form principale.

    Le code d’exécution du ping étant codé dans la winform principale, je récupére facilement ce résultat pour le stocker dans une variable. Mon problème provient de la deuxième winform. En effet j'aimerai récupérer la variable qui contient le résultat du test visuelle et le ramener vers la winform principale.

    Ce que je voudrais c'est que l'éxécution de mon code de la winform principale soit mis en pause jusqu'à la fermeture de la deuxième winform pour qu'il y ait une sorte de synchro et que je récupère correctement la variable.

    Voici le code de la winform principale:
    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
    67
    68
    69
    70
    71
     
    Private Function Test_Front_Switch()
            Dim boucle As Boolean = True
            Dim output As Boolean = False
            Dim ping_result As Boolean = False
            Dim buffer As String = "KO"
            Dim flag As Boolean = True
     
            WriteInLog("Starting Front Switch test ...")
            ProgressTextBox.Text = ProgressTextBox.Text & "Starting Front Switch test ..." & System.Environment.NewLine
            MsgBox("Please check if the system is powered and linked." & Environment.NewLine & "If it's ok, click Ok", vbInformation, "Prerequisites")
     
            WriteInLog("Ping Front Switch...")
            ProgressTextBox.Text = ProgressTextBox.Text & "Ping Front Switch..." & System.Environment.NewLine
            While boucle
                If flag = True Then
                    Try
                        BluetoothPort.Write("Ping Front Switch")
                        flag = False
                    Catch ex As Exception
                        WriteInLog(ex)
                    End Try
     
                End If
                Try
                    buffer = BluetoothPort.ReadExisting()
                Catch ex As Exception
                    WriteInLog(ex)
                End Try
     
                If buffer = "OK" Then
                    WriteInLog("Front Switch pinged successfully.")
                    ProgressTextBox.Text = ProgressTextBox.Text & "Front Switch pinged successfully." & System.Environment.NewLine
                    MsgBox("Front Switch pinged successfully.", vbInformation, "Test result")
                    boucle = False
                    ping_result = True
                ElseIf buffer = "KO" Then
                    WriteInLog("Ping Request timed out.")
                    ProgressTextBox.Text = ProgressTextBox.Text & "Ping Request timed out." & System.Environment.NewLine
                    If MsgBox("Ping Failed !" & Chr(13) & Chr(10) & "Check if the system is powered and linked." & Chr(13) & Chr(10) & "Do you want to retry?", vbRetryCancel + MsgBoxStyle.Exclamation) = vbCancel Then
                        boucle = False
                        ping_result = False
                    Else
                        flag = True
                        For x = 2 To 0 Step -1
                            ProgressTextBox.Text = ProgressTextBox.Text & "Waiting " & x & " seconds..." & System.Environment.NewLine
                            Pause(1)
                            ProgressTextBox.Undo()
                        Next
                    End If
                End If
            End While
     
            MsgBox("You will begin the Visual Inspection of the Front Switch. Please fill the formular.", vbInformation, "Visual Inspection")
            inspection_window.Equipment_textbox.Text = "Front switch"
    '2nd winform
     
            inspection_window.Show()
     
    'winform principale
     
            Me.Hide() 
     
    'Mettre l attente éventuellement ici
     
            If ping_result = True And visual_inspection_result = True Then
                output = True
                Test_Sum.SetItemChecked(0, True)
            End If
            Return output
        End Function
    Voici le code de la 2nd winform:
    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
     
    Public Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
            If (Pos_box_nok.Checked = True Or Fix_box_nok.Checked = True Or Quality_box_nok.Checked = True Or Ergo_box_nok.Checked = True) And Remarks_textbox.Text = "" Then
                MsgBox("Please fill the remarks before validation", vbCritical, "Be careful")
                flag = False
     
            ElseIf (Pos_box_nok.Checked = True Or Fix_box_nok.Checked = True Or Quality_box_nok.Checked = True Or Ergo_box_nok.Checked = True) And Len(Remarks_textbox.Text) < 5 Then
                MsgBox("min. 5 characters", vbCritical, "Be careful")
                flag = False
     
            ElseIf Pos_box_ok.Checked = True And Fix_box_ok.Checked = True And Quality_box_ok.Checked = True And Ergo_box_ok.Checked = True Then
                flag = True
                visual_inspection_result = True
                Bus_10M.Show()
                Me.Close()
     
            End If
        End Sub
    En attente de vos réponses ou questions si vous avez besoin de plus de précision car je ne sais pas si c'est très clair.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Par défaut
    Tu peux mettre le flag de la deuxième form en propriété public et ainsi récupérer la valeur dans la form 1.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 54
    Par défaut
    Ok je crois avoir trouver comment initialisé ma propriété:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Public Property Result() As Boolean
            Get
                Return visual_inspection_result
            End Get
            Set(ByVal r As Boolean)
                visual_inspection_result = r
            End Set
        End Property
    Mais je ne comprends pas comment l'utilisé?

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Par défaut
    Sorry, je n'avais pas vu que tu n'affichais pas en modal. Du coup un petit événement devrait suffire.

    Sur ton deuxième formulaire, tu fais un genre de "Public Event MonFlagAChangé(NouvelleValeur As Boolean)". Lorsque la valeur change, tu raises (conjuguer en un verbe anglais en français, ça claque !) l'event.

    Dans ton premier formulaire tu t'abonnes à cet événement. (Si tu vois pas comment faire, je te conseilles de regarder par ici)

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Par défaut
    Citation Envoyé par sticks_678 Voir le message
    Mais je ne comprends pas comment l'utilisé?
    Si tu avais été en modal (inspection_window.ShowModal()), alors tu aurais pu récupérer la valeur comme suit : inspection_window.Flag. Le fait est que tu n'est pas en modal et donc que ton formulaire principale continue l'exécution du code. On ne sait donc, a priori, par quand il est fermé.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 54
    Par défaut
    Je te remercie pour ta correction. Je venais de trouver comment utiliser la propriété mais je n'avais pas le résultat voulu. Je vais essayer ta deuxième solution et je reviendrai vers toi si j'ai un problème

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 54
    Par défaut
    Je bloque au niveau de l'abonnement, peux-tu m'aiguiller ?

  8. #8
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Par défaut
    Citation Envoyé par sticks_678 Voir le message
    Je bloque au niveau de l'abonnement, peux-tu m'aiguiller ?
    Tu n'as pas lu la doc jusqu'au bout

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    AddHandler MonFormulaire.MonEvent, AddressOf MaSub
     
    Private Sub MaSub()
     
    End Sub

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 54
    Par défaut
    Bonjour,

    Il me semble que ça fonctionne. J'avais lu rapidement la documentation il est vrai, mais je ne comprenais pas l'emplacement de chaque ligne de code.
    Je te remercie pour ton aide

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

Discussions similaires

  1. Problèmes sur Get Set d'une variable.
    Par Mattk dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/04/2007, 01h43
  2. Boucle sur une variable de type "heure"
    Par Charles25 dans le forum ASP
    Réponses: 3
    Dernier message: 15/11/2006, 17h51
  3. Réponses: 11
    Dernier message: 16/10/2006, 14h05
  4. recuperer l'affichage sur un ecran dans une variable
    Par oussama127 dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2006, 23h34
  5. petite question sur la récupération d'une variable
    Par minusette dans le forum Langage
    Réponses: 6
    Dernier message: 17/11/2005, 16h57

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