どのように私はC#のフォームで終了ボタンにコードを追加しますか?
質問
私は、Microsoft Visual C#2008 Expressを使用しています。
私のメインフォームでは、Xボタンは右上のフォームを閉じますことがあります。どのように私は、このボタンにコードを追加しますか?私のメニューでは、私は、「終了」項目を持っており、それがクリーンアップして、私のデータベースを閉じ、コードを持っています。ユーザーが道として終了することを選択した場合どのように私は、このボタンに同じコードを追加しますか?
ありがとうございます。
-Adeena
解決
FormClosingイベントを使用すると、フォームを閉じるのいずれかの方法をキャッチする必要があります。
他のヒント
フォームのデザインビューでは、[プロパティ]ウィンドウ内、イベントボタンを選択し、「FormClosed」と「FormClosing」のイベントにスクロールダウンします。
フォームが閉じられた後に、FormClosedが呼び出されます。
フォームが閉じられる前に、FormClosingが呼び出され、また、開いているフォームを保ち、あなたが近くをキャンセルすることができます:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
}
「あなたは、このフォームを閉じますよろしいですか?」、そして、あなたはFormClosing
を設定することができますし、フォームが開いたままになりCancel = True
を使用します。
、あなたはFormClosed
イベントを使用します。
、それは一種の問題ではありません。しかし、何が起こることを望んでいないことはクリーンアップするためのリソースを、イベントの他のハンドラが開いているフォームを維持するときFormClosing
を使用しています。
FormClosing / FormClosedを使用すると、アプリケーションが終了すると一致しているフォームのイベントを見ることができます。しかし、あなたがApplication.ApplicationExitと呼ばれるまで配線することができ、別のイベントがあります。
あなたのMainメソッドでます:
Application.ApplicationExit += Application_ApplicationExit;
...
private static void Application_ApplicationExit(object sender, EventArgs e) {
// do stuff when the application is truly exiting, regardless of the reason
}
あなたのWinフォームのクローズドイベントを使用します。
このコードは、ユーザー「X」をクリックするか、あなたが何かをできるようにするために、フォーム上のAlt-F4を使用してキャプチャします。私は私のclosingイベントを呼び出すためにアクションを必要とするので、これを使用していた、とによるレースイベントにFormClosingイベントを使用している場合、それを呼び出すことはありません。
/// <summary>
/// This code captures the 'Alt-F4' and the click to the 'X' on the ControlBox
/// and forces it to call MyClose() instead of Application.Exit() as it would have.
/// This fixes issues where the threads will stay alive after the application exits.
/// </summary>
public const int SC_CLOSE = 0xF060;
public const int WM_SYSCOMMAND = 0x0112;
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE)
MyClose();
base.WndProc(ref m);
}
ダブルその後、form'designで終了ボタンをクリックしてください 単に廃棄()メソッドを呼び出す
フォームアクションメソッド //
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
if (e.CloseReason == CloseReason.WindowsShutDown) return;
switch (MessageBox.Show(this, "Are you sure you want to exit?", "Exit", MessageBoxButtons.YesNo))
{
case DialogResult.No:
e.Cancel = true;
break;
default:
break;
}
}
You can use form closing events choose or set closing event in properties window
You can add dialog conditions based on what task you want to perform before closing form
private void Form1_FormClosing(object sender,FormClosingEventArgs e)
{
Application.Exit();
//you can also use Application.ExitThread();
}