0

私の C# WinForms プログラムにはいくつかのフォームがあり、そのうちの 1 つをダイアログとして表示します。

MyForm mf = new MyForm();
mf.ShowDialog();

しかし、フォームを閉じるイベントを割り当てようとすると、機能しません。

mf.FormClosing += delegate { MessageBox.Show("Dialog is closed.")};

何が問題ですか?

PS: mf.Show() メソッドを使用してフォームを呼び出すと、正常に動作します。

ありがとう。

4

3 に答える 3

5

「機能しない」というのは、どうしようもなく曖昧です。スニペットにセミコロンがありません。推測する必要がありますが、ShowDialog()を呼び出した後にFormClosingイベントを割り当てないでください。手遅れです。これは正常に機能します。

    private void button1_Click(object sender, EventArgs e) {
        using (var mf = new Form2()) {
            mf.FormClosing += delegate { MessageBox.Show("Dialog is closed."); };
            mf.ShowDialog();
        }
    }
于 2011-05-08T19:57:37.973 に答える
4

使用するシーケンスは何ですか?最初にイベントを登録してから、mf.ShowDialog()を呼び出す必要があります。

MyForm mf = new MyForm();
mf.FormClosing += delegate { MessageBox.Show("Dialog is closed.")};
mf.ShowDialog();

メッセージボックスに「ダイアログが閉じています」と書き込みますが、に登録しFormClosingます。FormClosedイベントFormClosingイベントがあることに注意してください。これは別のイベントです。

于 2011-05-08T19:53:14.577 に答える
2

試しに に変更ShowDialogしてみてくださいShow。動作 (イベントの発生方法) は実際には異なります。dispose メソッドを明示的に呼び出す必要がある場合があります。

http://www.dotnetmonster.com/Uwe/Forum.aspx/dotnet-vb/56720/If-I-want-FormClosing-and-FormClose-to-run-am-I-suppose-to-call

于 2011-05-08T19:58:10.867 に答える