Urgence

Résolu
MINDONGO - 20 déc. 2012 à 13:51
 MINDONGO - 6 févr. 2013 à 09:18
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

dodo7263 Messages postés 614 Date d'inscription mercredi 10 septembre 2008 Statut Membre Dernière intervention 9 février 2017 6
20 déc. 2012 à 15:17
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
3
ou placer le

Button.Dispose()

svp
0
mohamedali1989 Messages postés 80 Date d'inscription jeudi 22 mars 2012 Statut Membre Dernière intervention 12 mars 2013
5 févr. 2013 à 18:27
quelle est le role le fonction (Dispose() ) ??
0
@mohamedali1989 salut,

c'est en rapport avec quoi ta question?

int mindongo
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
6 févr. 2013 à 09:09
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.
0
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
0
Rejoignez-nous