[C#] Les evenements et l'héritage
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:
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:
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:
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