C#WindowsフォームでFormClosingイベントを使用して、終了前に確認するようユーザーに依頼しています。ユーザーがフォームウィンドウの隅に赤い十字を使用してフォームを閉じている場合にのみ、このメッセージを表示します。手動でフォームを閉じるか非表示にすると、確認メッセージを表示したくない(たとえば、手動でform.Close()を呼び出すなど)。C#WinFormが閉じられているかどうかを確認する
ユーザーが赤い十字を押したかどうかを確認できますか?
ありがとうございました。
C#WindowsフォームでFormClosingイベントを使用して、終了前に確認するようユーザーに依頼しています。ユーザーがフォームウィンドウの隅に赤い十字を使用してフォームを閉じている場合にのみ、このメッセージを表示します。手動でフォームを閉じるか非表示にすると、確認メッセージを表示したくない(たとえば、手動でform.Close()を呼び出すなど)。C#WinFormが閉じられているかどうかを確認する
ユーザーが赤い十字を押したかどうかを確認できますか?
ありがとうございました。
FormClosingEventArgs.CloseReasonプロパティを確認します。
FormClosing
イベントに渡されたイベント引数のCloseReason
プロパティを確認できます。
はFormClosing
イベントハンドラを使用して、この単純なコード置く:箱から出して
if (MessageBox.Show(this, "Do you want to close the Application?", "Exit App", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
e.Cancel = true;
}
else
{
//close app code
}
を、行動のこの種を検出するための簡単な方法はありません。 FormClosingイベントで確認できる「FormClosingEventArgs.CloseReason」プロパティがありますが、実際に閉じる理由を特定することはできません。
MSDNから、「UserClosing」列挙値の説明は次のとおり
ユーザであるフォームウィンドウの閉じるボタンをクリックして 例えば、ユーザインタフェース(UI)を介してフォームを閉じますウィンドウのコントロールメニューから を閉じるか、またはAlt + F4を押して選択します。
あなたが見ることができるように、多くの理由が記載されていますが、具体的な理由はありません。
あなたがしようとしているのは、ウィンドウの境界線(ボタンを含む)を削除し、自分の閉じるボタンを配置し、クリックイベントをキャッチして、私はそれが以前に行われていることを見てきましたが、正常に動作しますが、通常のウィンドウボタンと同じようには見えないかもしれません。
this.Close()
をプログラムで呼び出すか、ユーザーにXをクリックさせると、有効なチェックではないので、CloseReason.UserClosing
が得られます。
OnClosingにnull
というパラメータが渡された場合、基本的にthis.Closeを呼び出す "ハッピーな"ソリューションについては、下のコードを参照してください。
private void button1_Click(object sender, EventArgs e)
{
OnClosing(null);
}
protected override void OnClosing(CancelEventArgs e)
{
if (e == null)
{
// Raise your Message or Cancel
this.Close();
}
else
{
base.OnClosing(e);
}
}
新しいフォームを開くためのボタンがあります(form.Close()を使用して)その前のフォームを閉じます。したがって、ユーザーに確認を求めるメッセージが表示されます。申し訳ありませんが、私はこれを明確にしませんでした。 – Jpin
@ Yuck:これは技術的な質問であり、デザインに関するあなたの意見はないと想像してください。 –