Application.Exit() <- Bp

Signaler
Messages postés
334
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
3 juillet 2010
-
Messages postés
86
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
21 juin 2007
-
J’ai réaliser une petite application en c#.

Je voudrai quitter cette application avec une ligne de programme.
Il y a-t-il une autre fonction, car avec Application.Exit(); ne semble pas fonctionner

...
public Form1()
{
...
...
   Application.Exit(); // PB ICI ???
}
...
static void Main() 
{
   Application.Run(new Form1());
}
....


Merci pour mon aide

http://perso.wanadoo.fr/iar/IA.html

11 réponses

Messages postés
1522
Date d'inscription
mardi 18 décembre 2001
Statut
Modérateur
Dernière intervention
21 août 2010
6
Si tu close form1 il quit le prog aussi.

Currentthread.quit ou kk chose kom ca.

A++

:-p Crazyht :)

[Admin Codes-Sources]
[Membre Developer-Association]

Un programmeur, c'est quelqu'un qui résout pour toi, de façon incompréhensible, un problème que tu ignorais avoir...
Messages postés
334
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
3 juillet 2010

Oui, c’est pour quitter form1
Le compilateur n’accepte pas Currentthread
Messages postés
1522
Date d'inscription
mardi 18 décembre 2001
Statut
Modérateur
Dernière intervention
21 août 2010
6
dans ce cas this.close suffit pour fermer Form1.

A++

:-p Crazyht :)

[Admin Codes-Sources]
[Membre Developer-Association]

Un programmeur, c'est quelqu'un qui résout pour toi, de façon incompréhensible, un problème que tu ignorais avoir...
Messages postés
334
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
3 juillet 2010

DSL
this.Close(); ne donne rien.
j'ai esayé Form1.ActiveForm.Close(); idem rien

Faut il ajouter un using ou "references" ?
Merci
Messages postés
656
Date d'inscription
mercredi 22 août 2001
Statut
Membre
Dernière intervention
11 mars 2005
13
tu le fe ou ton this.Close(); ?

Si c'est dans le constructeur c normal, la boucle d'interception des messages Windows nest pas encore lancer, donc ton message WM_CLOSE n'arrive pas.

Sinon précise le contexte. On pourra mieux t'aider.

[Membre du laboratoire .NET de SUPINFO]
Messages postés
334
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
3 juillet 2010

C’est tout simple :

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace WindowsApplication1
{

public class Form1 : System.Windows.Forms.Form
{
private System.ComponentModel.Container components = null;

public Form1()
{
InitializeComponent();
Go();
}

protected override void Dispose( bool disposing )
{
if( disposing )
if (components != null) {components.Dispose();}}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
private void InitializeComponent()
{
…
}
#endregion
[STAThread]
static void Main() 
{
Application.Run(new Form1());
}

private void Go()
{
…
// Ici je veux quitter
}
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Tu appelle Go() depuis le constructeur, et donc, comme l'a dit gg00xiv, tu ne peux pas quitter.
Il faudrait :
la fermer lors d'une action de l'utilisateur,
ou créer un thread qui la fermerait après le constructeur.
Ceci dit, je ne vois pas ou est le but de créer une frame pour la refermer tout de suite.
Amicalement SharpMao
Messages postés
656
Date d'inscription
mercredi 22 août 2001
Statut
Membre
Dernière intervention
11 mars 2005
13
Met ce code dans le Form1_Load ca marchera

[Membre du laboratoire .NET de SUPINFO]
Messages postés
86
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
21 juin 2007
2
Effectivement, depuis le constructeur, ça n'ira pas !

Petite astuce tout de même pour fermer une appli récalcitrante :

[code]


Process Proc_EnCours


= Process. GetCurrentProcess


();



Process[] Les_Proc = Process.GetProcesses



();




foreach




(Process Processus in


Les_Proc

)

{




if




(Processus.ProcessName.ToLower




() ==
"appli"




)

{



Processus.Kill



();

}


}
/endcode

où "appli" est le nom de ton programme

avec un p'tit "using System.Diagnostics;" en haut de ton code
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
De vieux poste qui refont surface...

<hr size="2" />-Blog-
Messages postés
86
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
21 juin 2007
2
Eh oui, en faisant une petite recherche, je suis tombé dessus...


Si mon post peut aider quelqu'un dans la panade, j'aurai fait ma B.A. ;-)