Appeller un événement pendant un code.

Ptitfils Messages postés 9 Date d'inscription vendredi 24 janvier 2014 Statut Membre Dernière intervention 17 juin 2015 - 17 juin 2015 à 11:50
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 - 19 juin 2015 à 12:46
Bonjour,

J'ai encore un petit problème en VB.

J'ai deux form : form1 et pass2
Lorsque que je clique sur un bouton dans le form1, il lance pass2 à une condition sinon, l'exécution se poursuit.

Dans pass2, je demande un mot de passe.
Et lorsque le mot de passe est correct, il modifie la condition pour le lancement de la suite de la sub dans form1.
Or, comment relancer la sub dans form1 depuis la sub de pass2.


Je vous copie les codes ci dessous :
DANS FORM1 :
If Pmail1.Visible = False Then 'ici je vérifie la condition
pass2.Show() 'condition respectée : lancement de pass2
Exit Sub 'Arrêter l'execution
End If
'suite du code ici !

DANS PASS2 :

'execution après que le mot de passe soit entré dans un textbox
Dim password As String
Dim filer As System.IO.StreamReader
Dim myreadline As String
Dim myreadline2 As String
Dim filer2 As System.IO.StreamReader
'recherche du fichier1
filer = My.Computer.FileSystem.OpenTextFileReader(My.Computer.FileSystem.CurrentDirectory & "\password1.txt")
'lecture du fichier1
myreadline = filer.ReadLine
'recherche du fichier2
filer2 = My.Computer.FileSystem.OpenTextFileReader(My.Computer.FileSystem.CurrentDirectory & "\password2.txt")
'lecture du fichier2
myreadline2 = filer2.ReadLine
password = myreadline & myreadline2
If pass.Text = password Then
Form1.Pmail1.Visible = True
'C'EST ICI QUE JE SOUHAITE RENVOYER A L'EXECUTION DU FORM1
Me.pass.Text = ""
Me.Hide()
Else
Me.pass.Text = ""
Me.Hide()
End If


Merci de ne pas juger la mauvaise sécurité du mot de passe ! Je compte changer tout ça plus tard :)

6 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
17 juin 2015 à 12:11
Bonjour

Quand tu lances pass2 que fais tu avec form1 ? (hide?,close ?)
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
Modifié par cs_ShayW le 17/06/2015 à 13:24
classpass2 herite de la class form contient un maskedbox et un
bouton
un évenement okppassword cet évenement est déclenché dès que le password est correct

Public Class classpass2
Inherits Form
Private motdepasse As String = "123456789"
Event okpassword()
WithEvents mypassoword As New MaskedTextBox
WithEvents valid As New Button
Public Sub New()
Me.Height = 300
Me.Width = 300
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.StartPosition = FormStartPosition.Manual
valid.Enabled = False
valid.Text = "VALIDER"
mypassoword.PasswordChar = "*"c
mypassoword.Font = New Font("calibri", 12, FontStyle.Bold)
Me.Controls.Add(mypassoword)
Me.Controls.Add(valid)
mypassoword.Location = New Point(Me.Width \ 2 - mypassoword.Width \ 2, 10)
valid.Location = New Point(Me.Width \ 2 - valid.Width \ 2, mypassoword.Bottom + 10)
End Sub
Private Sub valid_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles valid.MouseClick
If mypassoword.Text = motdepasse Then
RaiseEvent okpassword()
Me.Dispose()
End If
End Sub

Private Sub mypassoword_KeyUp(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles mypassoword.KeyUp
If mypassoword.Text.Length = motdepasse.Length Then
valid.Enabled = True
Else
valid.Enabled = False
End If
End Sub
End Class


Public Class Form1
'on definit pass2
Private WithEvents pass2 As classpass2

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load

If Pmail1.Visible = False Then 'ici je vérifie la condition
pass2 = New classpass2
pass2.Location = New Point(Me.Width \ 2 - pass2.Width \ 2, Me.Height \ 2 - pass2.Height \ 2)
pass2.ShowDialog()
Exit Sub 'Arrêter l'execution
End If
End Sub

Private Sub pass2_okpassword() Handles pass2.okpassword
'ici tu continues le password est correct
End Sub
End Class
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
17 juin 2015 à 14:51
Bonjour,

Un truc tout simple. Regarde ce que fait ce code avec 2 Form

Form1:

 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Form2.ShowDialog()
        MsgBox("on continue")
    End Sub
   


Form2:

 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Me.Hide()
    End Sub


tu verras que ton message n'apparaitra qu' à la fermeture de ton Form2
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
17 juin 2015 à 15:10
Si tu veux a afficher le message que si le mot de passe est correct. A l'aide d'un CheckBox dans le form2 qui passe à True :

Form1:

  Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Form2.ShowDialog()
        If Form2.CheckBox1.Checked = True Then
            MsgBox("on continue")
        Else
            'rien
        End If

    End Sub


Form2:

  Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        If pass.Text = "123" Then
            CheckBox1.Checked = True
            'C'EST ICI QUE JE SOUHAITE RENVOYER A L'EXECUTION DU FORM1
            Me.pass.Text = ""
            Me.Hide()
        Else
            CheckBox1.Checked = False
            Me.pass.Text = ""
            Me.Hide()
        End If
        Me.Hide()
    End Sub


0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
17 juin 2015 à 15:23
Il va sans dire que les propriétés de la CheckBox
Enabled ou Visible sont à False
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 juin 2015 à 21:41
Bonjour,
je ne comprends pas pourquoi il ne suffirait pas :
- de déclarer publique une variable booléenne verif
- d'ouvrir un form2 (pour le mot de passe) en modal
---- de donner à verif la valeur True si bon mot de passe
---- de fermer form2
- dans form1 : continuer si verif = true ou message et quitter si false.
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
19 juin 2015 à 08:21
Bonjour Uc, parce que les variables globales sont déconseillées en .Net.

0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137 > Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024
19 juin 2015 à 10:40
Oui, il faut déclarer ta variable Public dans un module pour qu'elle soit reconnue!
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
19 juin 2015 à 12:46
Bonjour, oui ça marche, mais ça n'est pas conseillé.
La philosophie .Net est que tout passe par les objets, et donc il faudrait se ne servir des variables globales qu'en dernier recours.

En plus, souvent, ça prend une case mémoire pour quelque chose de ponctuel.
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
19 juin 2015 à 08:23
Bonjour, voici un petit tuto, parlant des différentes façons de faire interagir deux forms
http://codes-sources.commentcamarche.net/faq/11107-interactions-entre-form-en-net-c-et-vb-net

Certaines on déjà été évoquées, mais pas toutes.
0
Rejoignez-nous