- 締切済み
VB6 DoEventsの代わりは?
お世話になります。 progressbarを表示するために、 重たい処理のループの中ではDoEventsを入れることで表示ができているのですが、 ループとループの間でprogressbarを更新するには、どのようにしたらよろしいでしょうか? ***** 現状 for i =1 to 9999 重い処理 Frm_ProgressBar.ProgressBar1.value = 進捗数 DoEvents next i ***** やりたいこと for i =1 to 9999 重い処理A next i Frm_ProgressBar.ProgressBar1.value = 進捗数 DoEvents for i =1 to 9999 重い処理B next i
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- uruz
- ベストアンサー率49% (417/840)
No.2です。 ProgressBarは本来DoEvents()やRefreshで更新しなくてもValueの値を更新すると表示も更新される作りになっています、表示が更新されないのは「進捗数」が変化していないことが考えられます、そのあたりの確認をしてみてください。
- uruz
- ベストアンサー率49% (417/840)
Refreshメソッド Frm_ProgressBar.ProgressBar1.value = 進捗数 Frm_ProgressBar.ProgressBar1.Refresh
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
Q、VB6 DoEventsの代わりは? A、やはり、DoEvents。 Frm_ProgressBar.ProgressBar1.value = 進捗数 For i =1 To 9999 重い処理B If Frm_ProgressBar.ProgressBar1.value <> 進捗数 Then DoEvents End If Next i と、普通はこんな感じです。が、何となく違和感を感じます。 もしかしたら、要求されているのは、次のようなコードなんでしょうか? Frm_ProgressBar.ProgressBar1.value = 進捗数 Do DoEvents Loop Until Frm_ProgressBar.ProgressBar1.value = 進捗数 For i =1 To 9999 重い処理B Next i いずれにしろ、次のコードですと問題が解決されます。 Frm_ProgressBar.ProgressBar1.value = 進捗数 For i =1 To 9999 重い処理B DoEvents Next i
補足
回答ありがとうございます でも、ダメでした Refreshメソッドで表示が反映される前に、次のループに入ってしまい、 結果、描画は更新されませんでした。