Lier deux formulaires d'un même projet [Résolu/Fermé]

Signaler
Messages postés
25
Date d'inscription
lundi 5 septembre 2016
Statut
Membre
Dernière intervention
10 janvier 2019
-
Messages postés
14917
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 octobre 2020
-
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

Messages postés
29881
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 octobre 2020
2 886
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.
Messages postés
14917
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 octobre 2020
596
Bonsoir
l'appellation windows form étant associée à VB.Net, je vais donc parier sur cette technologie.
https://codes-sources.commentcamarche.net/faq/11107-interactions-entre-form-en-net-c-et-vb-net
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
19
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
Messages postés
14917
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 octobre 2020
596
Ce qui revient à passer un paramètre au constructeur, méthode expliquée dans le tuto que j’ai mis en lien