Таймер формата h:m:s с функцией паузы

Дядя Корней

Есть ли в vb какие-то средства, чтобы выводить таймер в формате h:m:s?Нужно так: 1. Нажали кнопку1, начался отсчет времени в формате h:m:s 2. Нажали кнопку2, таймер остановился. 3. Нажали кнопку3, таймер продолжил отсчет с того места, на котором был остановлен.Или помогите дописать велосипед. На MSDN нашел про некий TimeSpan, начал городить велосипед, но залип с возобновлением таймера. Код:
 Dim tmrStart As Date  ' время запуска
        Dim tmrStoped As Date ' время окончания
        Dim tmrRazn As New TimeSpan ' разница времени
 
'Запуск таймера
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        tmrStart = Now 'Начало работы таймера
        Timer1.Start()
    End Sub
 
'Таймер, который выводит в Label1 отсчет времени через каждую сек.
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        tmrStop = Now ' Тик таймера(завершение)
        tmrRazn = tmrStop.Subtract(tmrStart) ' Вычитаем разницу во времени
        Label1.Text = tmrRazn.Hours & ":" & tmrRazn.Minutes & ":" & tmrRazn.Seconds
    End Sub
 
'Останавливаем таймер
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Timer1.Stop()
    End Sub
 
'Возобновляем работу таймера с того места, где остановились
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        
'Тут чего-то под вечер уже не думается)))  Не знаю как нормально возобновить отсчет
 
    End Sub
4 ответа

Дядя Корней

        Dim tm As Date
        tm = Date.Now
        Label1.Text = Format(tm, "HH:mm:ss")
Это?Можно еще после секунды добавить десятые, сотые и т.д. (до 7 знаков) В зависимости от количества "f"
Label1.Text = Format(tm, "HH:mm:ss.fff")
Точка необязательна


Дядя Корней

Sklifosofsky, ага, формат тот, а вот как возобновить таймер это конечно вопрос))


Дядя Корней

Dim tmrStart As Date  ' время запуска
    Dim tmrStoped As Date ' время окончания
    Dim tmrNew As Date ' 
    Dim tmrRazn As New TimeSpan ' разница времени
 
    'Запуск таймера
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        tmrStart = Now 'Начало работы таймера
        Timer1.Start()
    End Sub
 
    'Таймер, который выводит в Label1 отсчет времени через каждую сек.
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        tmrStoped = Now ' Тик таймера(завершение)
        tmrRazn = tmrStoped.Subtract(tmrStart) ' Вычитаем разницу во времени
        Label1.Text = tmrRazn.Hours & ":" & tmrRazn.Minutes & ":" & tmrRazn.Seconds
    End Sub
 
    'Останавливаем таймер
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Timer1.Stop()
    End Sub
 
    'Возобновляем работу таймера с того места, где остановились
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        tmrNew = Now
        tmrStart = New Date(tmrNew.Ticks - tmrRazn.Ticks)
        Timer1.Start()
    End Sub
В этом виде необходимость в первой кнопке отпадает =)


Дядя Корней

Sklifosofsky, отож как! Работает, спасибо