Bonjour,

J'ai une classe A et B (qui hérite de A) et un formulaire frm.
Dans ma classe A j'ai déclaré un delegate et un evenement.
Dans ma classe B j'ai un événement du type de mon delegate dans la classe A.
Dans frm, j'instancie ma classe B

Le problème c'est que je n'arrive pas à gerer les événements comme il se doit. Le programme est capable d'afficher «erreurWarning», mais pas lorsque je veux me connecter à la BD, soit dans le constructeur...

Voici cela sous forme de code :

Classe A
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
22
23
24
25
26
27
28
29
30
 
public class BDMain
    {
 
        private const string CONNECTION_STRING = @"xxx; uid=xxx;pwd=xxx; database=xxx";
 
        public static SqlConnection SQLConnection = null;
 
        public delegate void uneErreur(string message);
        public event uneErreur erreurWarning;
 
        public BDMain()
        {
            if (SQLConnection == null)
            {
                SQLConnection = new SqlConnection(CONNECTION_STRING);
 
                try
                {
                    SQLConnection.Open();
                }
                catch (Exception ex)
                {
                    System.Diagnostics.StackFrame sf = new System.Diagnostics.StackFrame();
                    erreurWarning(@"Erreur dans la méthode : " + sf.GetMethod().Name + "\nIl y a eu un problème lors de la connexion à la base de données.\n\nDescription:\n" + ex.ToString() + "\n\n");
                    clsCore.getInstance().ecrireDansLog(sf.GetMethod().Name, ex.ToString(), "Ouverture de la connexion");
                }
            }
        }
}
Classe B :
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
 
public class BDClient : BDMain
{
        public event uneErreur erreurWarnings;
...
 
try
                {
                    rep = int.Parse(commandeSQL2.ExecuteScalar().ToString());
                }
                catch (Exception ex)
                {  
                    System.Diagnostics.StackFrame sf = new System.Diagnostics.StackFrame();
                    erreurWarnings("Erreur dans la méthode : " + sf.GetMethod().Name + "\n\nLa commande SQL " + commandeSQL.CommandText + " à rencontrer un problème à " + DateTime.Now.ToString("HH:mm:ss") + "\n\nDescription:\n" + ex.ToString() + "\n\n");
                    clsCore.getInstance().ecrireDansLog(sf.GetMethod().Name, commandeSQL.CommandText, ex.ToString());
                }
 
...
 
}
et le formulaire
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
22
23
 
...
clsClient client = new clsClient();
BDClient bd = new BDClient();
 
public frmFicheClient()
        {
            InitializeComponent();
 
            bd.erreurWarning += new BDMain.uneErreur(bd_erreurWarning);
            bd.erreurWarnings += new BDMain.uneErreur(bd_erreurWarnings);
        }
 
        void bd_erreurWarnings(string message)
        {
            MessageBox.Show(message, "Au bord du gouffre", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }
 
        void bd_erreurWarning(string message)
        {
            MessageBox.Show(message, "Au bord du gouffre", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }
...
Merci de votre aide