0

メインウィンドウといくつかの子ウィンドウがあります。子ウィンドウにはいくつかのデータが含まれているため、閉じたくありません。そのため、設定した FormClosing でそれらを非表示にしますe.Cancel = true;

しかし、メインウィンドウを閉じたいとき(アプリケーションを終了するとき)。私はそれを終了するのに少し問題があります。まず閉まらない。しかし、私が閉じていることに注意するための追加の変数を使用すると、実際に閉じるには2回クリックする必要があります(問題はonFormClosing(mainWIndow, ...)、フレームワークが実行される前に、最初に非表示になる子を閉じようとすることです)。

// main and child windows have this as form closing event proc
private void onFormClosing(object sender, FormClosingEventArgs e)
{
    if (sender == this) // main
    {
        exitApp = true;
    }
    else
        if (sender == formChild) // child
        {
            if (!exitApp)
            {
                e.Cancel = true;
                formChild.Hide();
            }
        }
}

ワンクリックですべてを閉じるにはどうすればよいですか?

Application.Exit();また、すべてのスレッドが適切に閉じていることを確認する必要があるため、回避したいと思います。したがって、きれいに閉じるのが最善です。

4

2 に答える 2

1

Application.Exit() でアプリケーションを強制できます。

于 2013-05-29T14:05:17.920 に答える
0

自分で解決策を見つけました:

// ...
if (sender == this) // main
{
    exitApp = true;
    FormClosing -= onFormClosing;
    Close();
}
// ...
于 2013-05-30T08:46:57.050 に答える