1

私は WindowsFormApplication を開発しています.1つのメインフォームには複数の子フォームが存在します. 私のフォームの 1 つでレポートが生成されます。その後、レポート生成の一部として呼び出される他のすべての中間フォームを閉じて、親フォームを呼び出したいと考えています。ユーザーが共通の閉じるボタン 'X' (Windows オペレーティング システムで共通のウィンドウを閉じるために使用されるボタン) を使用してレポートを閉じようとしたときに、親ウィンドウを呼び出したいと考えています。

どの子フォームからでもいつでも親フォーム/スタートアップフォームにアクセスするにはどうすればよいですか? 最後のフォームが終了したときにメインフォームを除く他のすべての子フォームを閉じるにはどうすればよいですか?

誰かが私を助けてください..事前に感謝..

4

2 に答える 2

1

最終フォームを閉じるときにスタートアップ フォームを表示するにFormClosedは、最終フォームのイベントのイベント ハンドラーを次のように追加します。

FinalForm f = new FinalForm();
f.FormClosed += (s,e) => {
   StartupForm sf = new StartupForm();
   sf.Show;
   //if your StartupForm is defined somewhere
   //just call sf.Show();
};
//If you are using VS 2005 or below, you have to define a method for FormClosed event handler (unable to use the lambda expression above
private void FormClosedHandler(object sender, FormClosedEventArgs e){
  StartupForm sf = new StartupForm();
   sf.Show;
   //if your StartupForm is defined somewhere
   //just call sf.Show();
}
//Register the FormClosed event with the event handler above
f.FormClosed += new FormClosedEventHandler(FormClosedHandler);

//show your final form
f.Show();
//if this form is closed, the event FormClosed will be raised and the corresponding event handler (we added above) will be called.
于 2013-07-20T07:29:22.707 に答える
0

Winforms アプリの Application オブジェクトには、開いているすべてのフォームへの参照を含む OpenForms コレクションがあります。そのコレクションからフォームへの参照を取得し、Close() を呼び出してフォームを閉じることができます。

あなたのコメントに加えて、 finalreport の OnClosing イベントで、このコードを実行できます

foreach (Form f in Application.OpenForms)
            {
                if (f.GetType().ToString().Contains("start"))
                    f.Focus();
            }
于 2013-07-19T10:04:54.930 に答える