2012-04-10 3 views
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, чтобы показать «Обработка ... Complete!».

+1

Скорее всего подходит к SO – Billjk

+0

Могу ли я спросить, что такое SO? – Muhnamana

+0

Я думаю, что другой сайт, вероятно, лучше всего подходит для моего вопроса. Спасибо, парни. – Muhnamana

ответ

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, чтобы показать ход вашего кода.

+0

Спасибо. Я рассмотрю ваши предложения. – Muhnamana

0
If ToolStripProgressBar1.Value = 100 Then 

Вы уверены, что ваша стоимость когда-либо достигнет «ровно» 100? Может

If ToolStripProgressBar1.Value >= 100 Then 

Или 100 некоторые magic number?

EDIT: Это действительно зависит от кода, который вы собираетесь использовать. Индикатор выполнения - это просто визуальный индикатор для пользователя, который вы должны установить на основе определенного процесса. Если вы просто хотите, чтобы она отображалась, чтобы показать, что что-то происходит (похоже на значок часового стекла), это должно сработать.

Где-то вам нужно установить значение timer.enabled в false и очистить индикатор выполнения.

+0

Ну, я думаю, что магическое число может быть выше или ниже, в зависимости от того, сколько времени требуется, чтобы в качестве примера скопировать текстовый файл 1G из местоположения 1 в местоположение 2 или на основе количества кода, который вы обрабатываете. – Muhnamana

Смежные вопросы