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
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
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"); } } } }
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 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()); } ... }
Merci de votre aide
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); } ...
Partager