私は偶発的な閉鎖を防ぐために、クローズイベントを持つ子ウィンドウを持っています。この子ウィンドウには、操作を実行して子を閉じ、親ウィンドウに新しい情報を報告するボタンクリックハンドラがあります。残念なことに、このボタンアクションはclosingイベントも呼び出します。この特定のウィンドウ終了イベントを回避して、その情報を報告するにはどうすればよいですか?バイパスウィンドウボタンからのイベントのクローズ
私はちょうどそれを読んで、それはちょっと混乱しているようです。必要ならば編集します。
私は偶発的な閉鎖を防ぐために、クローズイベントを持つ子ウィンドウを持っています。この子ウィンドウには、操作を実行して子を閉じ、親ウィンドウに新しい情報を報告するボタンクリックハンドラがあります。残念なことに、このボタンアクションはclosingイベントも呼び出します。この特定のウィンドウ終了イベントを回避して、その情報を報告するにはどうすればよいですか?バイパスウィンドウボタンからのイベントのクローズ
私はちょうどそれを読んで、それはちょっと混乱しているようです。必要ならば編集します。
あなたが正しく理解している場合、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();
}
デザインを確認してください。あなたはそのようなこと行うことができます
: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();
}
は、プロパティを持っています。 closeイベントが発生すると、ForceClosedがtrueであるかどうかを確認します。そうであれば、偶発的な閉鎖を防ぐために必要なことを実行してください。
この問題にはさまざまな解決策があったようですが、私が見た最初のものを実装したばかりです。みんな、ありがとう。 – ecMode