プログレスバーで文字列を表示するには?

解決


新一  2005-06-23 11:10:04  No: 122932  IP: [192.*.*.*]

今検索処理をしていて、その検索中の間はプログレスバーを表示
してどのぐらいの時間がかかるのかという事をしているのですが
「検索中」というLabelを貼っても処理の問題上なのかもしれませ
んが表示されないのです。確実に文字列を表示する事ができないも
のでしょうか?

編集 削除
むっきー  2005-06-23 11:40:55  No: 122933  IP: [192.*.*.*]

Labelを更新したあとでDoEvents

編集 削除
ガッ  2005-06-23 11:42:13  No: 122934  IP: [192.*.*.*]

個人的には[Label].Refresh…多分。

編集 削除
特攻隊長まるるう  2005-06-23 11:49:23  No: 122935  IP: [192.*.*.*]

画面の表示はただ文字列を設定すればいいだけでなく、描画処理
が走らないと表示更新されません。普段は自動で行われるために
意識しなくてもいいのですが、外部処理の応答待ちだったり、
Sleep などでプロセスが停止状態だったりするとプログラム側で
明示的に表示更新処理が走るようなコードを書く必要があります。

>確実に文字列を表示する事ができないものでしょうか?
開発環境もどんなコードを書いてるかも示さないくせに要求する
ことだけは確実に…ですか。
Refresh だとか Update などのメソッドが有効な場合もあれば、
DoEvents でOSに制御を返すのが有効な場合もあります。
…プログラムに合わせて最適な方法を選択して下さい。

編集 削除
特攻隊長まるるう  2005-06-23 12:04:18  No: 122936  IP: [192.*.*.*]

…ああ、あと、意外なところでプログレスバーとラベルを
重ねててラベルの文字が見えないとか言い出す人も見た事
ある。…上の質問には詳細が書かれていないので判断できない
ですが。ボクなんかは、デザイン画面で見えてなきゃ見えない
のが当然だと思っちゃうけど…ZOrder とかいうキーワードで
階層構造について調べれば実現できるかどうかも含めて分かる
事でしょう。

編集 削除
新一  2005-06-23 12:16:17  No: 122937  IP: [192.*.*.*]

DoEventsを使用しました。見事に解決!!
自分の知識のなさに悲しくもなりましたが
皆様のおかげでまたひとつ知識を増やすことが
できました。ありがとうございました。

編集 削除
マグ  2005-06-23 13:10:10  No: 122938  IP: [192.*.*.*]

>重ねててラベルの文字が見えないとか言い出す人も見た事
>ある。…上の質問には・・・・・・

VB.NETならControls.Addでプログレスバーを親とすれば可能ではないでしょうか?

編集 削除