C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: サブフォームのモーダル表示待ち中の表現手法


(過去ログ 96 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■57434 / inTopicNo.1)  サブフォームのモーダル表示待ち中の表現手法
  
□投稿者/ HAN (1回)-(2011/02/26(Sat) 11:43:26)

分類:[C#] 

2011/02/26(Sat) 11:44:02 編集(投稿者)

こんにちは。
VisualStudio2010 C# (.Net 3.5) で開発しています。

メインフォームからサブフォーム(以下、サブ)をモーダルで表示させているのですが、
サブ内のデータが多いためサブが表示されるのに時間が掛かります。

この時、「サブの表示待ち状態である」ことをユーザーに伝えたいのですが、
どんな方法がありますか?

ちなみに、サブ表示時はメインを非表示にしたいため下記のようにしています。
そのため、メインが消えてからサブが表示されるまで5秒ほど間があき、
まるでソフトが落ちてしまったように思われてしまいます。

this.Visible = false; // 親フォームを非表示
using (fmForm2 subForm = new fmForm2()) // 新しいインスタンスを生成する
{
subForm.ShowDialog(); // Form をモーダルで表示する
}
this.Visible = true; // 親フォームを表示


よろしくお願いいたします。
引用返信 編集キー/
■57435 / inTopicNo.2)  Re[1]: サブフォームのモーダル表示待ち中の表現手法
□投稿者/ 魔界の仮面弁士 (2110回)-(2011/02/26(Sat) 12:08:28)
No57434 (HAN さん) に返信
> サブ内のデータが多いためサブが表示されるのに時間が掛かります。

(案1)ロード完了までの間、スプラッシュウィンドウもしくは代替画面を代わりに表示させておく。
 http://dobon.net/vb/dotnet/form/splashwindow.html

(案2)コントロール類は Enabled = False の状態で開始するようにし、
 コンストラクタや Load では時間のかかる処理を行わないようにしておく。
 その上で、実際のデータ読み込み処理は BackgroundWorker 経由で行わせ、
 その進捗状況を ReportProgress 経由でプログレスバーで表示させる。

(案3)案2とほぼ同じだが、データの進捗状況を報告できないケースにおいて、
 RunWorkerCompleted までの間、サブフォームには「しばらくお待ちください」の
 メッセージ/もしくは待機中を表すアニメーションを表示させておく。

# BackgroundWorker 部分は、Web サービスの Async 系メソッドなどといった
# 他の非同期呼び出し処理でも同様。

引用返信 編集キー/
■57436 / inTopicNo.3)  Re[1]: サブフォームのモーダル表示待ち中の表現手法
□投稿者/ shu (477回)-(2011/02/26(Sat) 12:37:22)
No57434 (HAN さん) に返信

魔界の仮面弁士 が進捗の表現方法について書かれているので
その他、思ったこと

・visible = falseをShowDialogの手前に持ってきたほうが処理方法によっては
 待っている感を減らせるかも。
new fmForm2 → 読込 → Visible = false → ShowDialog

引用返信 編集キー/
■57437 / inTopicNo.4)  Re[2]: サブフォームのモーダル表示待ち中の表現手法
□投稿者/ HAN (2回)-(2011/02/26(Sat) 13:17:15)
魔界の仮面弁士さん
3案もありがとうございました。
ひとまず今回はスプラッシュで乗り切ってみようと思います。
他の2案も勉強してみます。

shuさん
なるほど...
確かに少しはありそうですね。
早速、書き換えてみます。

お二方、ありがとうございました。
解決済み
引用返信 編集キー/
■57440 / inTopicNo.5)  Re[3]: サブフォームのモーダル表示待ち中の表現手法
□投稿者/ やじゅ (1846回)-(2011/02/26(Sat) 21:53:39)
やじゅ さんの Web サイト
No57437 (HAN さん) に返信
>メインフォームからサブフォーム(以下、サブ)をモーダルで表示させているのですが、
>サブ内のデータが多いためサブが表示されるのに時間が掛かります。

解決済みになっていますが、一応提案を。
もし、データをDataGridViewを使用していて、仮想モードを使用していない場合、
仮想モードを使用してみてはどうでしょうか?

Windows フォーム DataGridView コントロールでの仮想モードの実装
http://msdn.microsoft.com/ja-jp/library/15a31akc(v=VS.80).aspx

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -