7

Microsoft Visual C# 2008 Express を使用しています。

私のメイン フォームには、フォームを閉じる X ボタンが右上にあります。このボタンにコードを追加するにはどうすればよいですか? 私のメニューには「Exit」項目があり、データベースをクリーンアップして閉じるコードがあります。ユーザーが終了方法としてこのボタンを選択した場合、このボタンに同じコードを追加するにはどうすればよいですか?

ありがとう!

-アディーナ

4

9 に答える 9

12

FormClosing イベントを使用すると、フォームを閉じるあらゆる方法をキャッチする必要があります。

于 2009-05-24T18:18:19.053 に答える
8

フォームのデザイン ビューの [プロパティ] ウィンドウで、[イベント] ボタンを選択し、"FormClosed" および "FormClosing" イベントまで下にスクロールします。

FormClosed は、フォームが閉じられた後に呼び出されます。

FormClosing はフォームが閉じられる前に呼び出され、フォームを開いたまま閉じをキャンセルすることもできます。

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = true;
}
于 2009-05-24T18:22:17.470 に答える
1

ユーザーに「このフォームを閉じてもよろしいですか?」と尋ねたい場合はFormClosing、設定できる場所で を使用Cancel = Trueし、フォームを開いたままにします。

フォームが確実に閉じられたときにのみリソースを閉じたい場合は、FormClosedイベントを使用します。

コード全体を管理している場合、それは問題ではありません。しかし、発生したくないFormClosingのは、イベントの他のハンドラーがフォームを開いたままにするときに、リソースをクリーンアップすることです。

于 2009-05-24T19:01:52.457 に答える
0

フォームアクションメソッド//

 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;
                     }
         }
于 2013-03-04T05:02:12.143 に答える
0

このコードは、ユーザーが「X」をクリックするか、フォームで Alt-F4 を使用して何かを実行できるようにすることをキャプチャします。クロージング イベントを呼び出すアクションが必要だったので、これを使用する必要がありましたが、レース イベントのために 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);
}
于 2009-05-24T18:46:35.713 に答える
0

winform の Closed-Event を使用します。

于 2009-05-24T18:16:23.297 に答える
0

form'design の終了ボタンをダブルクリックしてから、単に Dispose() メソッドを呼び出します。

于 2013-03-02T16:42:31.103 に答える
0
 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();
}
于 2016-04-01T07:31:48.753 に答える
0

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

}
于 2009-05-24T18:26:39.570 に答える