Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1543 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [c# / .NET][résolu] erreur sur Application.Exit()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c# / .NET][résolu] erreur sur Application.Exit()

n°997455
didier1809
${citation_perso}
Posté le 01-03-2005 à 19:57:33  profilanswer
 

:hello:  
 
j'ai fait un ptit prog tout con, mais a la ligne application.exit(), il se plante lamentablement :
 

Code :
  1. using System;
  2. using System.Drawing;
  3. using System.Windows.Forms;
  4. class labwin2
  5. {
  6.      public static void Main()
  7.      {
  8.        Application.Run(new myForm());
  9.      }
  10. }
  11. class myForm : Form
  12. {
  13. static int nbLance=0;
  14. static string choixUtil,resRand,res,resPourc;
  15.   public myForm()
  16.   {
  17.        Text = "Jeu du pile ou face";
  18.        BackColor = Color.Beige;
  19.        Width = 300;
  20.        Height = 300;
  21.        Location = new Point(200,200);
  22.        StartPosition = FormStartPosition.Manual;
  23.      
  24.        string message = "oui : pile, non : face, annuler : quitter";
  25.        string caption = "Choix";
  26.        bool ok = true,ok2 = true;
  27.        int i = 0,temp;
  28.        MessageBoxButtons buttons = MessageBoxButtons.YesNoCancel;
  29.        DialogResult result;
  30.        Random rand = new Random();
  31.        Show();  //Affiche la form
  32. while (ok2) //Tant qu'on ne veut pas quitter
  33. {
  34.           while (ok)  //Tant qu'on veut continuer ce jeu
  35.           {
  36.                 result = MessageBox.Show(message,caption, buttons,MessageBoxIcon.Question);
  37.                 temp = rand.Next(1,3);
  38.                 if (temp == 1)    //Résultat du random
  39.                     resRand = "Pile";
  40.                 else
  41.                     resRand = "Face";
  42.                
  43.                 if(result == DialogResult.Yes)   //Click sur oui  (pile)
  44.                 {
  45.                     choixUtil = "Pile";
  46.                     if (temp == 1)
  47.                     {
  48.                         MessageBox.Show("Gagné","Pile",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
  49.                         i++; //nombe de bonnes reponses
  50.                         res = "Gagné";
  51.                     }
  52.                     else
  53.                     {
  54.                        MessageBox.Show("Perdu","Pile",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
  55.                        res = "Perdu";
  56.                     }
  57.                 }    //fin click sur oui
  58.                 if (result == DialogResult.Cancel)  //click sur cancel
  59.                 {
  60.                    ok = false;
  61.                 }  //fin click sur cancel
  62.                 if(result == DialogResult.No)   //click sur non  (face)
  63.                 {
  64.                     choixUtil = "Face";
  65.                     if (temp == 2)
  66.                     {
  67.                        MessageBox.Show("Gagné","Face",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
  68.                        i++;   //nb bonnes reponses
  69.                        res = "Gagné";
  70.                     }
  71.                     else
  72.                     {
  73.                        MessageBox.Show("Perdu","Face",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
  74.                        res = "Perdu";
  75.                     }
  76.                 }  //fin click sur non
  77.                 nbLance++;   //incrementation nombre de lancés
  78.                 resPourc = ((i*100)/nbLance).ToString();  //calcul pourcentage
  79.                Refresh();   //force l'actualisation de la form
  80.                
  81.           }    //fin tant qu'on veut continuer ce jeu
  82.           //Affichage du choix : oui : quitter, non : remimse a 0
  83.           result = MessageBox.Show("oui : quitter, non : remise à 0",caption,MessageBoxButtons.YesNo,MessageBoxIcon.Question);
  84.          
  85.           //si on clique sur oui : quitter
  86.           if(result == DialogResult.Yes)
  87.           {
  88.                     ok2 = false;
  89.           }
  90.          
  91.           //Si on clique sur non : remise à 0
  92.           if (result == DialogResult.No)
  93.           {
  94.              i = 0;
  95.              ok = true;
  96.              nbLance = 0;
  97.              choixUtil = "";
  98.              resRand = "";
  99.              res = "";
  100.              resPourc = " ";
  101.              Refresh();
  102.           }
  103. //fin tant qu'on veut jouer
  104.        MessageBox.Show("Ca va couper ... ",caption,MessageBoxButtons.YesNo,MessageBoxIcon.Question);
  105.        Application.Exit();
  106.      }
  107.   protected override void OnPaint(PaintEventArgs pea)
  108.   {
  109.            Graphics grfx = pea.Graphics;
  110.            base.OnPaint(pea);
  111.            grfx.DrawString("Numéro du lancé: " + nbLance, Font,Brushes.Black,5,5);
  112.            grfx.DrawString("Choix de l'utilisateur :      " + choixUtil,Font,Brushes.Black,40,20);
  113.            grfx.DrawString("Lancé:            " + resRand,Font,Brushes.Black,40,35);
  114.            grfx.DrawString("Résultat:                        " + res,Font,Brushes.Black,40,50);
  115.            grfx.DrawString("Pourcentage de réussite de la partie : " + resPourc+"%",Font,Brushes.Black,5,65);
  116.   }
  117. }


 
je met le code complet au cas ou  :o
 
c'est à la ligne 122  :sweat:


Message édité par didier1809 le 02-03-2005 à 21:53:30

---------------
.
mood
Publicité
Posté le 01-03-2005 à 19:57:33  profilanswer
 

n°997789
didier1809
${citation_perso}
Posté le 02-03-2005 à 06:18:43  profilanswer
 

:sweat:


---------------
.
n°998167
didier1809
${citation_perso}
Posté le 02-03-2005 à 12:47:31  profilanswer
 

vraiment personne ?


---------------
.
n°998171
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-03-2005 à 12:51:36  profilanswer
 

c'est quoi le message d'erreur exact ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°998172
didier1809
${citation_perso}
Posté le 02-03-2005 à 12:53:23  profilanswer
 

Harkonnen a écrit :

c'est quoi le message d'erreur exact ?


 
 


Exception non gérée : System.ObjectDisposedException: Impossible d'accéder à un
objet supprimé nommé "myForm".
Nom de l'objet : "myForm".
   at System.Windows.Forms.Control.CreateHandle()
   at System.Windows.Forms.Form.CreateHandle()
   at System.Windows.Forms.Control.get_Handle()
   at System.Windows.Forms.Control.SetVisibleCore(Boolean value)
   at System.Windows.Forms.Form.SetVisibleCore(Boolean value)
   at System.Windows.Forms.Control.set_Visible(Boolean value)
   at System.Windows.Forms.ThreadContext.RunMessageLoopInner(Int32 reason, Appli
cationContext context)
   at System.Windows.Forms.ThreadContext.RunMessageLoop(Int32 reason, Applicatio
nContext context)
   at System.Windows.Forms.Application.Run(Form mainForm)
   at labwin2.Main()
 


---------------
.
n°998174
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-03-2005 à 12:58:57  profilanswer
 

évidemment que ça marche pas... tu fous tout le code dans le constructeur !
Application.Exit() supprime tous les objets, dont myForm. et comme tout ton code est dans le constructeur, myForm n'existe pas au moment ou Exit() est appelé !
je te conseille de te lire un bon bouquin sur la POO, parce que là il te manque carrément les bases


---------------
J'ai un string dans l'array (Paris Hilton)
n°998179
didier1809
${citation_perso}
Posté le 02-03-2005 à 13:07:07  profilanswer
 

Harkonnen a écrit :

évidemment que ça marche pas... tu fous tout le code dans le constructeur !
Application.Exit() supprime tous les objets, dont myForm. et comme tout ton code est dans le constructeur, myForm n'existe pas au moment ou Exit() est appelé !
je te conseille de te lire un bon bouquin sur la POO, parce que là il te manque carrément les bases


 
Bon, ok, mais alors, le code executable, je le met ou ? En poo j'ai pas trop de probleme, c'est plutot avec les Form que ca pose probleme  :sweat:


Message édité par didier1809 le 02-03-2005 à 13:08:16

---------------
.
n°998184
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-03-2005 à 13:12:24  profilanswer
 

ben tu le mets dans une fonction, que t'appelles en réponse à un évènement dans la Form (le clic sur un bouton par exemple)


---------------
J'ai un string dans l'array (Paris Hilton)
n°998186
masklinn
í dag viðrar vel til loftárása
Posté le 02-03-2005 à 13:14:34  profilanswer
 

didier1809 a écrit :

En poo j'ai pas trop de probleme, c'est plutot avec les Form que ca pose probleme  :sweat:


La preuve que si [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°998187
didier1809
${citation_perso}
Posté le 02-03-2005 à 13:14:39  profilanswer
 

Harkonnen a écrit :

ben tu le mets dans une fonction, que t'appelles en réponse à un évènement dans la Form (le clic sur un bouton par exemple)


 
 :jap: , mais tu n'aurais pas un site ou l'autre avec des exemples ou des cours assez claires ? Y a pas encore grand chose de bien en c# ou .NET, meme ici  :sweat:


---------------
.
mood
Publicité
Posté le 02-03-2005 à 13:14:39  profilanswer
 

n°998188
didier1809
${citation_perso}
Posté le 02-03-2005 à 13:15:21  profilanswer
 

masklinn a écrit :

La preuve que si [:spamafote]


 
On vient de commencer avec les form, et on a pas eu trop de cours, donc on fait un peu n'importe quoi, mais en C++, la ca va, je fait pas des erreurs comme ca  :D


---------------
.
n°998192
didier1809
${citation_perso}
Posté le 02-03-2005 à 13:21:43  profilanswer
 

J'ai trouvé la methode OnLoad, donc la ca marche, merci de l'aide ;)


---------------
.
n°998197
FlorentG
Unité de Masse
Posté le 02-03-2005 à 13:25:56  profilanswer
 

didier1809 a écrit :

J'ai trouvé la methode OnLoad, donc la ca marche, merci de l'aide ;)


Ouais mais nan, c'est foireux tout ça :/

n°998220
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-03-2005 à 13:49:10  profilanswer
 

didier1809 a écrit :

J'ai trouvé la methode OnLoad, donc la ca marche, merci de l'aide ;)


n'importe quoi !
fous un bouton dans ta Form, et démarre le code par appui sur le bouton, c'est largement plus propre


---------------
J'ai un string dans l'array (Paris Hilton)
n°998635
didier1809
${citation_perso}
Posté le 02-03-2005 à 19:47:20  profilanswer
 

Harkonnen a écrit :

n'importe quoi !
fous un bouton dans ta Form, et démarre le code par appui sur le bouton, c'est largement plus propre


 
Faire le boutton, ok, c'est facile, mais j'ai pas comprit comment on faisait pour que le Onclick (si c'est bien ca ?) fonctionnait ?
 
Ou alors c'est le mouseeventarg qu'il faut utiliser ?


---------------
.
n°998649
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-03-2005 à 19:58:27  profilanswer
 

didier1809 a écrit :

Faire le boutton, ok, c'est facile, mais j'ai pas comprit comment on faisait pour que le Onclick (si c'est bien ca ?) fonctionnait ?
 
Ou alors c'est le mouseeventarg qu'il faut utiliser ?


le controle Button possède un évenement Click. tu dois donc ajouter un delegate EventHandler à cet évenement, qui appellera la fonction associée au click :

Code :
  1. this.button1.Click += new System.EventHandler(this.button1_Click);
  2. [...]
  3. private void button1_Click(object sender, System.EventArgs e)
  4. {
  5.    // ton code
  6. }


button1_Click est la fonction qui sera appelée quand tu cliqueras sur le bouton.
je te conseille d'acheter un bouquin sur Winforms, et de te renseigner sur la programmation évenementielle, les delegates, les evènements, etc... c'est le B-A BA


---------------
J'ai un string dans l'array (Paris Hilton)
n°998748
didier1809
${citation_perso}
Posté le 02-03-2005 à 21:53:07  profilanswer
 

Harkonnen a écrit :

le controle Button possède un évenement Click. tu dois donc ajouter un delegate EventHandler à cet évenement, qui appellera la fonction associée au click :

Code :
  1. this.button1.Click += new System.EventHandler(this.button1_Click);
  2. [...]
  3. private void button1_Click(object sender, System.EventArgs e)
  4. {
  5.    // ton code
  6. }


button1_Click est la fonction qui sera appelée quand tu cliqueras sur le bouton.
je te conseille d'acheter un bouquin sur Winforms, et de te renseigner sur la programmation évenementielle, les delegates, les evènements, etc... c'est le B-A BA


 
 
Merci, ca marche, je prefere ca comme programmation, le 1e truc que j'avais fait ne me convenait pas :)
 
Ca change pas mal de la programation "console" les winform  :sweat:  
 
Je vais chercher un bouquin, ca pourra toujours servir  :o  
 
 
Encore merci  :jap:


---------------
.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [c# / .NET][résolu] erreur sur Application.Exit()

 

Sujets relatifs
[Résolu] Lancer un raccourci en VBS[VisualC++ 6] Help ! Version Win32 release tombe en erreur
[résolu] balises BBCodes que mon script ne prend pas en compte ...Revenir dans un textbox apres erreur
source d'une frame en fonction de l'historique [RESOLU][mySQL] Comment fusionner 2 tables ? (bis) [résolu]
[Résolu] Concaténation spécifiqueprobleme en utilisant htmlentities[résolu]
comment résoudre l'erreur de scriptApplication SWT autonome - manifest, lib, classpath...?
Plus de sujets relatifs à : [c# / .NET][résolu] erreur sur Application.Exit()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR