Comment connaître le formulaire ayant ouvert un formulaire?

Gwendal3 Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 15 août 2011 - 10 juil. 2010 à 17:46
Gwendal3 Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 15 août 2011 - 13 juil. 2010 à 13:01
Bonjour,

J'ai un formulaire qui me sert à ajouter / modifier des valeurs, "Form1".
Celui-ci peut être ouvert par différents formulaires.

Ma question: Comment, à la fermeture de "Form1", savoir quel formulaire l'avait ouvert pour pouvoir actualiser les données de celui-ci?

Gdal

4 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
10 juil. 2010 à 18:09
Bonjour,

Tu peux surcharger la méthode ShowDialog en ajoutant la form appellante, pour faire cela.

0
cs_ssefyou Messages postés 119 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 18 juillet 2013 1
11 juil. 2010 à 15:56
bonjour,

si tu n'est pas familiarisé avec la POO , je te propose une solution simple
tu vas ajouter une variable public de type string dans la forme1 et quand tu appel form1.show()
form1.Nom de la var que tu ajouter = nom de la form appelante.
0
Gwendal3 Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 15 août 2011
11 juil. 2010 à 16:18
Salut,

Merci pour ta réponse...
Je connais cette méthode:
Dim frmOuvrant As frmNomFormulaire
frmOuvrant = CType(Me.Owner.ActiveMdiChild, frmNomFormulaire)
frmOuvrant.NomFonction(Parametre1, Parametre2,...)
 

Mais elle impose de connaître le formulaire ouvrant.

Si tu as un exemple avec la Programmation Orienté Objet, je suis preneur.

Comment, à la fermeture de "Form1", savoir quel formulaire l'avait ouvert pour pouvoir appeler une fonction avec quelques paramètres?

Merci

Gdal
0
Gwendal3 Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 15 août 2011
13 juil. 2010 à 13:01
Salut,

J'ai, plus ou moins, contourné le problème:

Trois formulaires:
- FormA, ouvre le FormB en modale
- FormC, ouvre le FormB normalement
- FormB, ajouter / modifier les valeurs

--- Formulaire FormA
Public Class FormA
 
    ' Ouvrir le formulaire B en modale
    Private Sub btOFormB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btOFormB.Click
 
        Dim frmFormB As New FormB("FormA")
        frmFormB.ShowDialog(Me)
 
    End Sub
    
End Class


--- Formulaire FormC
Public Class FormC
 
    ' Ouvrir le formulaire B normalement
    Private Sub btOFormB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btOFormB.Click

        Dim frmFormB As New FormB ("FormC")
        frmFormB .MdiParent =  frmIndex
        frmFormB .ParenteFormC = Me
        frmFormB .Show()
 
    End Sub
    
End Class


--- Formulaire FormB
Public Class FormB
 
#Region "Liaison inter-formulaire "

    Public frmParenteFormC As frmFormC
    Public WriteOnly Property ParenteFormC() As frmFormC
        Set(ByVal value As frmFormC)
            frmParenteFormC  = value
        End Set
    End Property

#End Region

    Private frmOuvrant As string
 
    Sub New(ByVal frmO As string)
 
        ' Cet appel est requis par le Concepteur Windows Form.
        InitializeComponent()
        frmOuvrant = frmO
 
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 
        Me.close()
 
    End Sub
 
    ' A la fermeture du formulaire
    Private Sub FormB_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

        ' Actualiser le formulaire ouvrant
        Select Case strFormOuvrant

            Case "FormA"

                ' Mise à jour de la combobox
                Dim frmFormA As FormA
                frmFormA = CType(Me.Owner.ActiveMdiChild, FormA)
                frmFormA .RemplirCbo()

            Case "FormC"

                ' Mise à jour du DataGridView
                frmParenteFormC.RechargerDgdv()

            Case Else

        End Select

    End Sub

End Class


Voilà

Gdal
0
Rejoignez-nous