Рейтинг:
8
OriginalGriff
Вместо того чтобы использовать DateTime и изменять его, возьмите текущее время при запуске таймера и установите целевое время:
private DateTime target;
...
target = DateTime.Now.AddMinutes(30);
Timer1.Start();
Затем в вашем обработчике тиков проверьте разницу:
void Timer1_Tick(object sender, EventArgs e)
{
TimeSpan diff = target - DateTime.Now;
if (diff.TotalSeconds <= 0)
{
myTextBox.Text = "Done!";
Timer1.Stop();
}
else
{
myTextBox.Text = ((int) diff.TotalSeconds).ToString();
}
}
Таким образом, он будет работать практически с любым смещением и будет намного более точным.
binadi007
Привет OriginallGriff,
У меня есть некоторые сомнения,
1) где вызвать "target = DateTime. Now. AddMinutes(30);" (я caling Timer1. Start () из файла aspx, то есть по тегу & lt;asp:timer> )
2) мне нужно оставшееся время в формате hh:mm:ss, а не в секундах, о которых упоминает myTextBox.Text = ((int) diff.Итого секунд).Метод toString();
Большое спасибо за помощь
binadi007
да, вы правы, и я тоже это осуществлю, но на данный момент Вы можете дать ответ на эти 2 вопроса, т. е.:-
1) где вызвать "target = DateTime. Now. AddMinutes(30);" (я caling Timer1. Start () из файла aspx, то есть по тегу & lt;asp:timer> )
2) мне нужно оставшееся время в формате hh:mm:ss, а не в секундах, о которых упоминает myTextBox.Text = ((int) diff.Итого секунд).Метод toString();
спасибо
OriginalGriff
Нет-потому что это совершенно бессмысленно, так как находится не на той стороне.