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