none
プロセスバー表示中に同じフォームに説明を表示させたい。 RRS feed

  • 質問

  •  

    メインメニューから新しいフォームを呼び出すとき、場合によっては長大な計算をしなければならないので、

    そのとき、プロセスを表示させ、その横に「計算中!」と表示させたいのですが、

    文字の表示がうまくいきません。

     

    メニュー側

      '新しい計算
        Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
            Me.Cursor = Cursors.WaitCursor

        Label1.Visible = True
            pBar1.Visible = True
            pBar1.Minimum = 1
            pBar1.Maximum = 80000
            pBar1.Value = 1
            pBar1.Step = 50
            NewCalculation.Show()
            pBar1.Visible = False
            Me.Cursor = Cursors.Default
        End Sub

    呼び出され側で、ループの中に

                    MainMenu.pBar1.PerformStep()  
                    MainMenu.Label1.Visible = True
    とやってみても、バーは表示されますが、ラベルが表示されません。

    コンパイラー側からみれば、どうせ消えるもので、無駄な処理とみなされているのでしょうか。

    困っています。お願いします。

     

     

    2008年10月19日 3:49

回答

  • Refreshメソッドはどうでしょう?次のようにすると、すぐ表示されますよ。

     Label1.Text = "abc"

     Label1.Refresh

    あと、Sleepメソッドで、0.1秒ほど処理を止めるのも、あるいは効き目ある、かもしれず。

    おたずねの主旨と違っていたら御免なさい。

     

    2008年10月21日 1:56

すべての返信

  • 以下を読んでみてください。

     

    時間のかかる処理をバックグラウンドで実行するには?[2.0のみ、C#、VB]
    http://www.atmarkit.co.jp/fdotnet/dotnettips/436bgworker/bgworker.html

     

    第4回 Background Workerで夢のマルチスレッドがついに!
    http://www.atmarkit.co.jp/fdotnet/vb2005/vb2005_04/vb2005_04_02.html

    2008年10月19日 11:43
    モデレータ
  • ご返答ありがとうございます。

    バックグラウンドワーカーは前に使ったことがあります。そのときは同一のフォーム内でのことでした。

    今回は、メニューから、フォームを開くときに、最新の集計結果を表示しようとしているので

    うまくいかないのですね。考え方を変えてみます。

    再集計にはとても時間がかかるので苦心しております。最終的に10分×2ぐらい(デバッグモードで)。

    集計結果を保存するのに、20秒ぐらい。集計結果を読み込むのには5秒ぐらいです。

     

    再検討いたします。

    2008年10月19日 16:43
  • Refreshメソッドはどうでしょう?次のようにすると、すぐ表示されますよ。

     Label1.Text = "abc"

     Label1.Refresh

    あと、Sleepメソッドで、0.1秒ほど処理を止めるのも、あるいは効き目ある、かもしれず。

    おたずねの主旨と違っていたら御免なさい。

     

    2008年10月21日 1:56
  • ありがとうございます。

    リフレッシュで簡単に表示できました。

    求めていたのはこれでした。

    ありがとうございます。

     

    2008年10月21日 3:08