Bonjour,

N'arrivant pas à trouver le moyen de transferer des informations d'un formulaire "fils" vers son formulaire "père", j'ai essayé de gérer par le formulaire "père" les exceptions levées lors des traitement du formulaire "fils".

Voici une partie de mon code qui explique mon raisonnement.

Classe du formulaire "père"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Public Class Acceuil
 
    Private sub OuvertureAdministration()
 
        Dim maFenetre as Administration = new Administration()
        Try
            maFenetre.ShowDialog()
        Catch ex as exception
            Select Case ex.message
                Case "Fermeture"
                    Me.Close()
                Case "Cancel"
                    Return
                Case else
                    MessageBox.Show(ex.Message, titre, MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Select
        End Try
        'Traitement après fermeture
    End sub
 
End Class
Classe du formulaire "fils"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Public Class Administration
 
    Public Sub New()
        InitializeComponent()
        ' Traitements divers
    End Sub
 
    Private Sub Quitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Quitter.Click
        Throw New ArgumentException("Fermeture")
    End Sub
 
    Private Sub AnnulerClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Annuler.Click
        Throw New ArgumentException("Cancel")
    End Sub
 
End Class
Je vous passe passe les pavés de code inutiles pour le sujet de discussion.


Le problème de cette façon de faire est la suivante :
  • Lorsque je lance l'application en mode debug, l'exception lancée par le formulaire "fils" est bien captée par le formulaire "père".
  • Lorsque je compile l'application et lance l'assembly (.exe), le clic sur le bouton "Annuler" de "Administration" provoque ce message d'erreur


Connaîtriez-vous un moyen de faire transiter une information d'un formulaire vers le formulaire qui l'a lancé, sachant que plusieurs formulaires différents peuvent lancer le même ?

Sinon, comment faire pour qu'un formulaire "Père" puisse capter les exceptions lancées par un formulaire "Fils" ?

Merci d'avance.