2011-06-22 4 views
0

J'ai une fenêtre enfant avec un événement de fermeture pour éviter toute fermeture accidentelle. Dans cette fenêtre enfant, j'ai un gestionnaire de clic sur un bouton qui va effectuer une opération puis fermer l'enfant et signaler à la fenêtre parente les nouvelles informations. Malheureusement, cette action de bouton appelle également l'événement de fermeture. Comment puis-je contourner cet événement de fermeture de fenêtre spécifique et juste signaler cette information? Je viens de le lire et cela me semble un peu déroutant. Je vais éditer si besoin.Événement de fermeture de la fenêtre de contournement à partir du bouton Cliquez sur

+0

Il semble qu'il y avait beaucoup de différentes solutions à ce problème et j'ai juste mis en application juste le premier que j'ai vu qui a fonctionné. Merci tout le monde. – ecMode

Répondre

2

Si je vous comprends bien, vous définissez dans OnClosing le Cancel -property à true et par conséquent la fenêtre ne se ferme pas. Maintenant, vous cherchez une possibilité de fermer la fenêtre de votre événement de clic de bouton bien que vous ayez cet événement OnClosing. Droite?
Une possibilité consiste à définir une variable membre que vous définissez dans l'événement buttons. Dans OnClosing, vous définissez uniquement e.Cancel sur true si cette variable membre n'est pas définie.

class YourClass{ 
    bool m_closeAnyway; 
    void OnClosing(....){ 
     if(!m_closeAnyway){ 
      e.Cancel=true; 
     } 
    } 
    void ButtonClickEventHandler(...){ 
     m_closeAnyway=true; 
     Close(); 
     DoTheRest(); 
    } 
1

Vous devriez revoir votre conception.

Vous pouvez faire quelque chose comme ça:

public void ClosingEvent (...) 
{ 
    if(this.ToValidate) 
    { 
     this.Validate(); 
     // Or e.Cancel; I don't know exactly know what you want to prevent... 
    } 
} 

public void ButtonClick(...) 
{ 
    this.ToValidate = false; 
    this.Close(); 
} 
1

ont une propriété comme ForceClosed true et par défaut sur le bouton cliquez sur Définir pour être faux. Lorsque l'événement de fermeture se déclenche, vérifiez si ForceClosed est vrai. Si c'est le cas, effectuez tout ce qui est nécessaire pour éviter une fermeture accidentelle.

Questions connexes