1

ステータスバー内にプログレスバーを組み込んで、完了した処理量を表示する方法を理解しようとしています。以下は、プログレスバーを更新する私の例です(これが正しい方法かどうかはわかりません)

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    ToolStripProgressBar1.Value = ToolStripProgressBar1.Value + 2
    If ToolStripProgressBar1.Value = 100 Then
        ToolStripProgressBar1.Value = 0
        ToolStripProgressBar1.Value = ToolStripProgressBar1.Value + 2
        Timer1.Enabled = True
    End If
End Sub

ボタン内のコードは次のとおりです。

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1Run.Click
    ToolStripStatusLabel1.Text = "Processing..."
    Timer1.Enabled = True

    'more code to be inserted here        

End Sub

わからないのは、コードの量に基づいてプログレスバーを更新する方法です。処理が完了したら、を更新しToolStripStatusLabel1て「Processing ... Complete!」と表示します。

4

2 に答える 2

1

通常、このPerformStep()メソッドを使用してProgressBarを更新します。このアクションは、ProgressBarの値をStepプロパティに入力された値だけインクリメントします。

ProgessBarにはMaximum、進行状況が100%になるタイミングを決定するプロパティもあります。つまり、Maximum=100およびValue=100の場合、ProgressBarは完全に表示されます。

典型的なセットアップ:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1Run.Click
  ToolStripProgressBar1.Maximum = 100
  ToolStripProgressBar1.Step = 2
  ToolStripProgressBar1.Value = ToolStripProgressBar1.Minimum
  ToolStripStatusLabel1.Text = "Processing..."
  Timer1.Start()
End Sub

Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick
  ToolStripProgressBar1.PerformStep()
  If ToolStripProgressBar1.Value >= ToolStripProgressBar1.Maximum Then
    Timer1.Stop()
    ToolStripStatusLabel1.Text = "Completed"
    ToolStripProgressBar1.Value = ToolStripProgressBar1.Minimum
  End If
End Sub

タイマーは通常、コードの進行状況を示すための奇妙なタイプの測定です。ProgressBarは通常、BackgroundWorkerとともに使用され、コードの進行状況を表示します。

于 2012-04-10T14:51:04.707 に答える
0
If ToolStripProgressBar1.Value = 100 Then

あなたの価値は「正確に」100になると確信していますか?多分

If ToolStripProgressBar1.Value >= 100 Then

それとも100はマジックナンバーですか?

編集:それは本当にあなたが実行しようとしているコードに依存します。プログレスバーは、特定のプロセスに基づいて設定する必要があるユーザーの視覚的なインジケーターにすぎません。何かが起こっていることを示すためだけに表示したい場合(砂時計のアイコンに似ています)、これは機能するはずです。

どこかでtimer.enabledをfalseに設定し、プログレスバーをクリーンアップする必要があります。

于 2012-04-10T14:14:42.593 に答える