Urgence [Résolu]

Signaler
-
 MINDONGO -
bonjour,
suis entrain de faire une application en C#, mais lors de l'Exécution, dans le

[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Menu_Général ());
}
il y a ce message


**************************
l'Exeption ObjectDisposedException n'a pas été Gérée
"""""""""""""""""""""""""""""""
Impossible d'accéder à un objet supprimé.
Nom de l'objet : 'Button'.
""""""""""""""""""""""""""""""

c'est juste après avoir lancer la connexion (Formulaire d'authentification)


dont les codes :


private void button1_Click(object sender, System.EventArgs e)
{
valider();
}
private void mot_de_passe_Leave (object sender, System.EventArgs e)
{
valider();
}

void valider()
{
Cursor = Cursors.WaitCursor;

if(this.MdiParent.Menu.MenuItems[0].MenuItems[0].Text =="Connexion")
{
OdbcConnection cn = new OdbcConnection("DSN=KINGMINDONGO");
try
{
cn.Open();
}
catch
{
MessageBox.Show("ERREUR LORS DE LA CONNEXION");
}
finally
{
OdbcCommand comm;
comm=new OdbcCommand("select * from utilisateur where login=? and mot_de_passe=?",cn);
comm.Parameters.Add("login",login.Text);
comm.Parameters.Add("mot_de_passe",mot_de_passe.Text);
comm.Connection=cn;
OdbcDataReader rs;
try
{
rs=comm.ExecuteReader();
if (rs.Read())
{
if(rs.GetString(2)== "administrateur")
{
this.MdiParent.Menu.MenuItems[1].Visible=true;
this.MdiParent.Menu.MenuItems[2].Visible=true;
this.MdiParent.Menu.MenuItems[3].Visible=true;
this.MdiParent.Menu.MenuItems[4].Visible=true;
this.MdiParent.Menu.MenuItems[5].Visible=true;
}
else
{
this.MdiParent.Menu.MenuItems[3].Visible=true;
this.MdiParent.Menu.MenuItems[4].Visible=true;
}
this.MdiParent.Menu.MenuItems[0].MenuItems[0].Text = "Déconnexion" ;
this.MdiParent.Text=this.MdiParent.Text +" ********** BE WELCOME "+rs.GetString(5)+" "+rs.GetString(3)+" "+rs.GetString(4)+" ********** ";
this.Close();
}
else
MessageBox.Show(this,"Login ou Mot de passe invalide","",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
catch(Exception er)
{
MessageBox.Show(this,"Login ou Mot de passe invalide","",MessageBoxButtons.OK,MessageBoxIcon.Error);
login.Text=er.ToString();
}
}
}
Cursor = Cursors.Arrow;
}
}
}
si quelqu'un peut m'aider à le résoudre car je suis limité pour ça

merci d'avance.
[code=cs]
/code

6 réponses

Messages postés
642
Date d'inscription
mercredi 10 septembre 2008
Statut
Membre
Dernière intervention
9 février 2017
5
Salut,

Quelle est la ligne qui lève l'exception ?
Le message est clair, dans ton code (qui n'est pas entier ici), tu dois faire un dispose en quelque part du style button.dispose(). Du coup tu essais d'acceder à un objet qui "n'existe plus".

@+

SD
ou placer le

Button.Dispose()

svp
Messages postés
80
Date d'inscription
jeudi 22 mars 2012
Statut
Membre
Dernière intervention
12 mars 2013

quelle est le role le fonction (Dispose() ) ??
@mohamedali1989 salut,

c'est en rapport avec quoi ta question?

int mindongo
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
11
Salut,

il ne faut justement pas faire de Button.Dispose().
object.Dispose() correspond à la désallocation mémoire d'un objet, et doit être, le plus souvent, laissée au ramasse-miettes.

Deux petites remarques :
- utilise les balise [ code ] pour que ton code soit plus lisible,
- je crois que tu te méprends sur le fonctionnement du finally, ce dernier block est exécuté même dans le cas où une exception est levée.
salut,
j'ai déjà trouvé cette solution en effaçant

private void mot_de_passe_Leave (object sender, System.EventArgs e)
{
valider();
} 


int mindongo