IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[Exception]Gestion d'une exception d'un formulaire par un formulaire "parent"


Sujet :

Windows Forms

  1. #1
    Membre averti Avatar de mordrhim
    Inscrit en
    Avril 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 270
    Points : 314
    Points
    314
    Par défaut [Exception]Gestion d'une exception d'un formulaire par un formulaire "parent"
    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.

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Pour le pourquoi du comment je dois avouer que j'aurais du mal à répondre, car à priori je ne vois pas de problème. C'est en utilisant le même formulaire "parent" que tu as le souci ? Car tu dis que plusieurs formulaires peuvent afficher le même, donc il suffit que sur un tu n'aies pas géré les exception et patatras.

    Ce qui aurait été éventuellement utile c'est que tu nous sortes le détail de l'exception si tu y as accès (bouton Détail de la fenêtre peut être ? ou bien un try/catch global pour essayer de la récupérer).

    Sinon ta façon de faire est tout sauf correcte. On utilise surtout pas des exceptions pour faire ce genre de choses. Lorsque tu affiches une fenêtre en modal (méthode ShowDialog) tu peux définir le retour avec un DialogResult (OK, Cancel, Abort, Ignore, ...). C'est beaucoup plus propre que ton "bricolage"

    Pour cela tu peux définir la propriété DialogResult de tes boutons en mode design, ou bien affecter la propriété DialogResult du formulaire dans le code lorsque tu cliques sur les boutons concernés.

    Ensuite, il suffit de tester ce DialogResult sur le retour de la méthode ShowDialog. Regarde l'exemple de la MSDN
    Pas de questions techniques par MP

Discussions similaires

  1. Réponses: 11
    Dernier message: 04/10/2012, 09h34
  2. Design : gestion d'une exception
    Par Le Grand Habchkleu dans le forum Windows Forms
    Réponses: 14
    Dernier message: 30/11/2009, 20h22
  3. Gestion d'une exception
    Par aloula dans le forum Général Java
    Réponses: 12
    Dernier message: 28/03/2006, 11h06
  4. Réponses: 2
    Dernier message: 28/08/2003, 00h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo