2013-03-18 3 views
0

Я получаю проблемы, пытаясь показать remainig время операцииПоказать оставшееся время TimeSpan

Проблема только с оставшимся таймером, я получаю отрицательные значения ...

Это пример Завершение операции 10000 мс (10 секунд):

enter image description here

Так или иначе, если я удалить «-» символ из временного интервала значений час и минута кадры из фильма incorrects ...

Dim time_out as integer = 60000 ' 'Milisegundos 

    Dim StartTime As DateTime ' Tiempo inicio 
    Dim EndTime As DateTime ' Tiempo final 

    Dim ElapsedTime As TimeSpan ' Tiempo transcurrido 
    Dim RemainingTime As TimeSpan ' Tiempo restante 


    ' Elapsed Time 
#Region " Elapsed Time Function " 

    Public Function Print_Elapsed_Time() 
     If StartTime.ToString = "01/01/0001 0:00:00" Then 
      StartTime = Now 
      StartTime = StartTime.AddSeconds(-1) 
     End If 
     ElapsedTime = Now().Subtract(StartTime) 
     Return String.Format("{0:00}:{1:00}:{2:00}", CInt(Math.Floor(ElapsedTime.TotalHours)) Mod 60, CInt(Math.Floor(ElapsedTime.TotalMinutes)) Mod 60, CInt(Math.Floor(ElapsedTime.TotalSeconds)) Mod 60) 
    End Function 
#End Region 

#Region " Remaining Time Function " 

    Public Function Print_Remaining_Time() 
     If EndTime.ToString = "01/01/0001 0:00:00" Then 
      EndTime = Now 
      EndTime = EndTime.AddMilliseconds(Time_Out - 1000) 
     End If 
     RemainingTime = Now().Subtract(EndTime) 
     Return String.Format("{0:00}:{1:00}:{2:00}", CInt(Math.Floor(RemainingTime.TotalHours)) Mod 60, CInt(Math.Floor(RemainingTime.TotalMinutes)) Mod 60, CInt(Math.Floor(RemainingTime.TotalSeconds)) Mod 60).Replace("-", "") 
    End Function 

#End Region 

ответ

1

Я думаю, что для окончания времени вы хотите:

RemainingTime = EndTime.Subtract(Now) 

В противном случае, я не конечно, как вы их инициализировали, но я сделал это изменение:

Dim StartTime As DateTime = DateTime.MinValue ' Tiempo inicio 
Dim EndTime As DateTime = DateTime.MinValue ' Tiempo final 

а также:

If StartTime = DateTime.MinValue Then ' ... etc ' 

, но, возможно, флаг или что-то в этом роде - лучший способ сигнализировать о сбросе.

+0

Благодарим за легкое решение! – ElektroStudios

2

Вот пример обратного отсчета от 10 секунд с помощью таймера и две метки

'example - countdown from 10 secs 
Dim countdown As New TimeSpan(0, 0, 10) 
Dim stpw As New Stopwatch 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    If stpw.IsRunning Then 
     stpw.Stop() 
     Timer1.Stop() 
    Else 
     stpw.Stop() 
     stpw.Reset() 
     stpw.Start() 
     Timer1.Interval = 100 
     Timer1.Start() 
    End If 
End Sub 

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 
    'label1 - elapsed time 
    'label2 - time remaining 
    If stpw.Elapsed <= countdown Then 
     Label1.Text = stpw.Elapsed.ToString 
     Label2.Text = (countdown - stpw.Elapsed).ToString 
    Else 
     stpw.Stop() 
     Label1.Text = countdown.ToString 
     Label2.Text = "00:00:00" 
    End If 
End Sub 
+0

Благодарим за ваше решение! – ElektroStudios

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