- PR -

あるフォームが表示されるまで別のフォームを表示する方法

1
投稿者投稿内容
あび
ベテラン
会議室デビュー日: 2004/07/29
投稿数: 59
投稿日時: 2005-05-17 09:21
メインフォームから、FormAを呼び出す際、表示に時間がかかります。
(Loadイベントで、時間がかかる処理をやっているため)
そこで、FormAが表示されるまで、”しばらくお待ちください”のFormBを表示させ、
FromAが表示される直前に、FormBをCloseさせたいのですが、
どうすればよいのでしょうか?
メインのボタンクリックイベントで、2つのフォームのインスタンスを作成したのですが、その先がうまくいきません。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-05-17 09:31
こんにちは、じゃんぬ です。

FormB は自発的に閉じさせるのが普通です。
FormB に何らかの方法で、FormA の準備が終わったことを通知すれば良いのです。
MainForm からどうしても制御したいのであれば、MainForm 側で、FormA の準備を整えて、
MainForm で確保した FormB のインスタンスを Close しないといけませんね。



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2005-05-17 09:52
引用:

メインのボタンクリックイベントで、2つのフォームのインスタンスを作成したのですが、その先がうまくいきません。



どんな風にうまくいかないのでしょうか?
次のような方法ではダメですか?

コード:
//メインフォームからFormAを呼び出す
private void button1_Click(object sender, System.EventArgs e)
{
    FormA fa = new FormA();//重い?処理のフォーム
    FormB fb = new FormB();//スプラッシュみたいなフォーム
    fb.Show();
    Application.DoEvents();
    fa.Show();
    fb.Close();//スプラッシュさんにさよならをする
}

//FormAのLoad処理
private void FormA_Load(object sender, System.EventArgs e)
{
    //ここでは適当に5秒停止
    System.Threading.Thread.Sleep(5000);
}



_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
あび
ベテラン
会議室デビュー日: 2004/07/29
投稿数: 59
投稿日時: 2005-05-17 09:58
じゃんぬねっとさん、Jubeiさん、御返答ありがとうございました。

Jubeiさんの方法でうまくいきました。

1

スキルアップ/キャリアアップ(JOB@IT)