2010-07-09 20 views
1

En Visual C#, comment puis-je détecter si l'utilisateur clique sur le bouton X pour fermer le programme? Je veux demander à l'utilisateur s'il souhaite effectuer une certaine action avant de quitter. J'ai un bouton de sortie dans mon programme lui-même, et je sais que je peux le code comme suit:Visual C#: quitter la vérification du programme

private void exitToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     DialogResult result; 
     if (logfiletextbox.Text != "") 
     { 
      result = MessageBox.Show("Would you like to save the current logfile?", "Save?", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk); 
      if (result == DialogResult.Yes) 
      { 
       savelog.PerformClick(); 
      } 
     } 
     Environment.Exit(0); //exit program 
    } 

Mais comment puis-je faire pour le bouton X qui est déjà intégré dans le programme?

Répondre

4
private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     if (MessageBox.Show("cancel?", "a good question", MessageBoxButtons.YesNo) == DialogResult.Yes) 
     { 
      e.Cancel = true; 
     } 
    } 

C'est l'événement "FormClosing" du formulaire. Amusez-vous, mon ami.

4

Ajoutez un gestionnaire d'événements pour FormClosing sur le formulaire.

Le concepteur de formulaire fera automatiquement pour vous si vous sélectionnez l'événement, mais de le faire manuellement:

this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Main_FormClosing); 

Et puis ajoutez le gestionnaire dans votre code:

private void Main_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    //Code here 
} 

Si vous ne souhaitez pas fermer le formulaire, vous pouvez définir: e.Cancel = true;

0

Si vous utilisez un formulaire, vous pouvez intercepter l'événement Form.FormClosing. Il peut être annulé en définissant la propriété Cancel dans les arguments, en fonction de la saisie par l'utilisateur.

+0

Vous devez utiliser l'événement 'Form.FormClosing' plus récent à la place. – SLaks

+0

Merci. Mise à jour de la réponse :-) – Mau

2

Il existe un événement FormClosing que vous pouvez lier à un événement qui se déclenche lorsque le formulaire est sur le point de se fermer. Le gestionnaire d'événements inclut un lien vers la raison pour laquelle le formulaire se ferme (action de l'utilisateur, arrêt du système d'exploitation, etc.) et vous propose une option pour l'annuler.

Découvrez l'article MSDN ici: http://msdn.microsoft.com/en-us/library/system.windows.forms.form.formclosing.aspx

2

utiliser l'événement Application.Exit ou Form.Closing. Quitter ne vous laissera pas annuler, donc la fermeture est probablement un meilleur choix

+0

L'événement Closing est déconseillé en faveur de l'événement FormClosing. – Powerlord

0

Utilisez simplement l'événement FormClosing du formulaire