2

私は 2 つのフォームを持っており、2 番目のフォームが閉じられると最初のフォームも閉じられるように (FormClosing メソッドを使用して) リンクしました。

これの問題は、2 番目のフォームを非表示にすると、最初のフォームが自動的に閉じられることです。FormClosing メソッドを実際に呼び出さずにフォームを非表示にする方法はありますか?

「Visible = false」および「Hide()」が使用されている場合、FormClosing メソッドは引き続き呼び出されるようです。

ありがとう。

4

5 に答える 5

2

Hide()フォームまたはで呼び出しますVisible=falseが、この場合、フォームはメモリに残り、そのフォームによって割り当てられたすべてのリソースはメモリに残ります。

これが問題である場合は、アーキテクチャを修正することをお勧めします。

于 2012-02-15T12:31:28.253 に答える
2

以下のように起動するようにプログラムを変更しました。

        MainForm mainForm = new MainForm();
        mainForm.Show();
        Application.Run();

それ以外の:

        Application.Run(new MainForm());

各フォームに、ユーザーがアプリケーションを閉じることを選択したかどうかを確認する FormClosing イベントを追加しました。この場合、確認を求めるプロンプトがユーザーに表示されます。

    private void ImageSelect_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (e.CloseReason == CloseReason.UserClosing)
        {
            if (DialogResult.No == MessageBox.Show("Are you sure you wish to exit?", "Exit Confirmation", MessageBoxButtons.YesNo))
                e.Cancel = true;
            else { Application.Exit(); }
        }
    }

アプリケーションは、アプリケーション内の任意のフォームから閉じることができるようになりました。

于 2012-02-22T14:00:52.057 に答える
0

を使用しますform.Hide()

これは、実際にフォームを閉じずに、ユーザーからフォームを隠すだけです。

于 2012-02-15T12:33:40.357 に答える
0
this.Hide();

また

this.Visible = false;
于 2012-02-15T12:33:46.890 に答える
-1

WinForms フォームを使用している場合は、Hide()メソッドが探しているものである必要があります。

于 2012-02-15T12:34:51.520 に答える