2013-08-01 5 views
0

Je souhaite masquer mon application dans la barre d'état système lorsque je clique sur le bouton Fermeture de formulaire (bouton X rouge classique). J'ai fourni ce code;C# Quitter l'application avec ContextMenuStrip

private void Ana_FormClosing(object sender, FormClosingEventArgs e) 
    {    
     e.Cancel = true; 
     this.Hide();   
    } 

donc mon programme en cours d'exécution Stil dans la barre système et j'ajouté un ContextMenuStrip et quand je clique droit sur mon ContextMenuStrip de la souris est venu « Fermer » mais quand je clique que « Fermer » mon programme en cours d'exécution encore je veux quitter de mon application lorsque je clique sur "Fermer". Voici mon code:

private void kapatToolStripMenuItem_Click(object sender, EventArgs e) //Close 
    { 

     DialogResult ext; 
     ext = MessageBox.Show("Çıkmak İstediğinizden Emin misiniz?", "Onay", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 
     if (ext == DialogResult.Yes) 
     { 
      Application.Exit(); 

     }  
    } 

    private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e) 
    { 
     this.Show();      
    } 
+0

C'est parce que l'application s'empêcher de fermer (Votre premier extrait). –

Répondre

0

appel Application.Exit() tentera réellement de fermer toutes vos formes, et parce que votre FormClosing est codé en dur pour être annulé, il ne peut pas terminer la tâche.

Une option avec votre structure actuelle serait de créer un drapeau AllowClose. Cela pourrait être une propriété du formulaire, ou il pourrait s'agir d'une valeur statique globale.

Par exemple:

//in your form 
public bool AllowClose {get;set;} 

private void Ana_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if(!AllowClose) 
    {    
     e.Cancel = true; 
     this.Hide(); 
    }   
} 

//in your context menu event 
private void kapatToolStripMenuItem_Click(object sender, EventArgs e) //Close 
{ 

    DialogResult ext; 
    ext = MessageBox.Show("Çıkmak İstediğinizden Emin misiniz?", "Onay", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 
    if (ext == DialogResult.Yes) 
    { 
     this.AllowClose = true; 
     Application.Exit(); 
    }  
} 
0

Essayez ce,

bool isClosing = false; 


private void Ana_FormClosing(object sender, FormClosingEventArgs e) 
    {    
     if(!isClosing) 
     { 
      e.Cancel = true; 
      this.Hide();   
     } 
    } 




private void kapatToolStripMenuItem_Click(object sender, EventArgs e) //Close 
    { 
     DialogResult ext; 
     isClosing = true; 

     ext = MessageBox.Show("Çıkmak İstediğinizden Emin misiniz?", "Onay", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 
     if (ext == DialogResult.Yes) 
     { 
      Application.Exit(); 

     }  
    } 
+0

Cela provoque le même problème et empêche la fonctionnalité d'origine de fonctionner. Vous voulez 'if (! IsClosing)' – musefan

Questions connexes