2011-06-22 8 views
0

私は偶発的な閉鎖を防ぐために、クローズイベントを持つ子ウィンドウを持っています。この子ウィンドウには、操作を実行して子を閉じ、親ウィンドウに新しい情報を報告するボタンクリックハンドラがあります。残念なことに、このボタンアクションはclosingイベントも呼び出します。この特定のウィンドウ終了イベントを回避して、その情報を報告するにはどうすればよいですか?バイパスウィンドウボタンからのイベントのクローズ

私はちょうどそれを読んで、それはちょっと混乱しているようです。必要ならば編集します。

+0

この問題にはさまざまな解決策があったようですが、私が見た最初のものを実装したばかりです。みんな、ありがとう。 – ecMode

答えて

2

あなたが正しく理解している場合、CancelプロパティをOnClosingに設定してtrueに設定すると、ウィンドウは閉じません。このOnClosingイベントがあっても、ボタンクリックイベントからウィンドウを閉じる可能性を探します。右?
ボタンイベントで設定したメンバー変数を定義することもできます。 OnClosingでは、このメンバー変数が設定されていない場合にのみe.Cancelをtrueに設定します。

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

デザインを確認してください。あなたはそのようなこと行うことができます

:ForceClosedをtrueにし、falseに設定するボタンクリック不履行よう

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

は、プロパティを持っています。 closeイベントが発生すると、ForceClosedがtrueであるかどうかを確認します。そうであれば、偶発的な閉鎖を防ぐために必要なことを実行してください。

関連する問題