Lier deux formulaires d'un même projet

Résolu
Micael27 Messages postés 29 Statut Membre -  
 Utilisateur anonyme -
Bonjour, je suis sur un projet et j'ai choisis VB a cause de son aspect graphiquement utile. J'ai donc créer des windows forms mais je n'arrive pas à les lier, j'ai déjà concu les interfaces et les boutons pour passer d'un form à un autre mais je bloque sur le code.
Merci de me dépanner

3 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Commence par nous préciser quel VB tu utilises :VBA, VB6, VB.NET (quelle version.. )

    Ensuite... explique nous exactement ce que tu entends par "lier" les formulaires.
    0
  2. Kalissi Messages postés 221 Statut Membre 20
     
    Bonjour,

    Exemple :

    1.) Créer une classe d'objet pour que les éléments de travail soient partagés.

    
    Public Class Elements
    
        Private mNom As String = String.Empty
        Private mPrenom As String = String.Empty
    
        Public Property Nom As String
            Get
                Return Me.mNom
            End Get
            Set(value As String)
                Me.mNom = value
            End Set
        End Property
    
        Public Property Prenom As String
            Get
                Return Me.mPrenom
            End Get
            Set(value As String)
                Me.mPrenom = value
            End Set
        End Property
    
    End Class
    
    


    2.) Créer le premier formulaire

    Public Class Form1
    
        Private mFrm2 As New Form2(Me)
        Private mDonnee As Elements
    
        Private Property Frm2 As Form2
            Get
                Return Me.mFrm2
            End Get
            Set(value As Form2)
                Me.mFrm2 = value
            End Set
        End Property
    
        Public Property Donnee As Elements
            Get
                If (Me.mDonnee Is Nothing) Then
                    Me.mDonnee = New Elements
                End If
                Return Me.mDonnee
            End Get
            Set(value As Elements)
                Me.mDonnee = value
            End Set
        End Property
    
        Private Sub btnForm2_Click(sender As Object, e As EventArgs) Handles btnForm2.Click
            Frm2.Show()
            Frm2.Donnee = Me.mDonnee
            Me.Hide()
        End Sub
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Frm2.Show()
            Frm2.Hide()
        End Sub
    
        Private Sub btnQuitter_Click(sender As Object, e As EventArgs) Handles btnQuitter.Click
            End
        End Sub
    
        Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
            Me.Donnee.Nom = TextBox1.Text
        End Sub
    
        Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
            Me.Donnee.Prenom = TextBox2.Text
        End Sub
    
        Private Sub Form1_Activated(sender As Object, e As EventArgs) Handles Me.Activated
    
            If (Frm2.Donnee IsNot Nothing) Then
                Me.Donnee = Frm2.Donnee
                Me.TextBox1.Text = Me.Donnee.Nom
                Me.TextBox2.Text = Me.Donnee.Prenom
            End If
    
        End Sub
    
    End Class
    


    3.) Créer le deuxième formulaire

    Public Class Form2
    
        Private mFrm1 As Form1
        Private mDonnee As Elements
    
        Private Property Frm1 As Form1
            Get
                Return Me.mFrm1
            End Get
            Set(value As Form1)
                Me.mFrm1 = value
            End Set
        End Property
    
        Public Property Donnee As Elements
            Get
                If (Me.mDonnee Is Nothing) Then
                    Me.mDonnee = New Elements
                End If
                Return Me.mDonnee
            End Get
            Set(value As Elements)
                Me.mDonnee = value
            End Set
        End Property
    
        Public Sub New(ByVal pFrm As Form1)
    
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
    
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            Frm1 = pFrm
    
        End Sub
    
        Private Sub btnForm1_Click(sender As Object, e As EventArgs) Handles btnForm1.Click
            Frm1.Show()
            Frm1.Donnee = Me.Donnee
            Me.Hide()
        End Sub
    
        Private Sub btnQuitter_Click(sender As Object, e As EventArgs) Handles btnQuitter.Click
            End
        End Sub
    
        Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
            Me.Donnee.Nom = TextBox1.Text
        End Sub
    
        Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
            Me.Donnee.Prenom = TextBox2.Text
        End Sub
    
        Private Sub Form2_Activated(sender As Object, e As EventArgs) Handles Me.Activated
    
            If (Frm1.Donnee IsNot Nothing) Then
                Me.Donnee = Frm1.Donnee
                Me.TextBox1.Text = Me.mDonnee.Nom
                Me.TextBox2.Text = Me.mDonnee.Prenom
            End If
    
        End Sub
    
    End Class
    


    testé avec VB 2015

    K
    0
    1. Utilisateur anonyme
       
      Ce qui revient à passer un paramètre au constructeur, méthode expliquée dans le tuto que j’ai mis en lien
      0