Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2012, 16:06   #1
Волк
Форумчанин
 
Аватар для Волк
 
Регистрация: 04.02.2009
Сообщений: 156
По умолчанию Таймер на форме

Здравствуйте!Подскажите пожалуйста как сделать чтобы на форму в лейбл выводилось сколько времени до окончания работы осталось.Допустим у нас на работу отводится 20.
я сделал так но он пропускает одну секунду интервал таймера 500
Код:
if (min>0)
            {
                if (time < max)
                {
                    time++;
                    label1.Text = "Тест закончится через: "+min.ToString()+":" + (max-time).ToString();
                }
                else
                {
                    min--;
                    time=0;
                    time++;
                    label1.Text = "Тест закончится через: " +min.ToString()+":" + (max-time).ToString();
                }
            }
            else
            {
                MessageBox.Show("Время вышло!");
                this.Close();
            }
Все мы отчасти гении!Но на сколько мы умны настолько же мы и глупы!

Последний раз редактировалось Волк; 23.05.2012 в 16:23.
Волк вне форума Ответить с цитированием
Старый 23.05.2012, 19:46   #2
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

1) если у вас время все в секундах зачем значение таймера пол секунды?
2) дебагер не помогает?
3) зачем вы используйте 3 переменные? нужно ведь только 2 - запоминание времени и конечное значение.
Код:
TimerTick()
{
if(timer<count)
{
timer+=1; // значение шага
label.text=(count-timer).ToString();
}else{timer=0;Timer.Stop();}
}
dampirik вне форума Ответить с цитированием
Старый 23.05.2012, 21:14   #3
Волк
Форумчанин
 
Аватар для Волк
 
Регистрация: 04.02.2009
Сообщений: 156
По умолчанию

3 переменная чтобы отображал минуты
Все мы отчасти гении!Но на сколько мы умны настолько же мы и глупы!
Волк вне форума Ответить с цитированием
Старый 23.05.2012, 21:27   #4
Slicker
Пользователь
 
Регистрация: 25.08.2008
Сообщений: 51
По умолчанию

Пропускает одну секунду? то есть вы хотите например чтобы если вы поставили 100 секунд на задание, то начинался отсчет со 100 секунд а не с 99? тогда нужно выводить значения прежде чем вы прибавляете 1 к переменной хранящей время.
Как-то так, полагаю:
Код:
        private void timer1_Tick(object sender, EventArgs e)
        {
            
            label1.Text = string.Format("Тест закончится через: {0}", (max-time).ToString());
            if ((max-time) == 0)
            {
                label1.Text = "Время вышло!";
                timer1.Stop();
            }
            time++;
        }
Slicker вне форума Ответить с цитированием
Старый 23.05.2012, 21:40   #5
Волк
Форумчанин
 
Аватар для Волк
 
Регистрация: 04.02.2009
Сообщений: 156
По умолчанию

я делаю так
Код:
if (min>0)
            {
                if (time < max)
                {
                    time++;
                    label1.Text = "Тест закончится через: "+min.ToString()+":" + (max-time).ToString();
                }
                else
                {
                    min--;
                    time=0;
                    time++;
                    label1.Text = "Тест закончится через: " +min.ToString()+":" + (max-time).ToString();
                }
            }
            else
            {
                MessageBox.Show("Время вышло!");
                this.Close();
            }
и он считает 19:58, 19:56,19:54 и тд
Все мы отчасти гении!Но на сколько мы умны настолько же мы и глупы!
Волк вне форума Ответить с цитированием
Старый 23.05.2012, 21:47   #6
Волк
Форумчанин
 
Аватар для Волк
 
Регистрация: 04.02.2009
Сообщений: 156
По умолчанию

все в порядке надо было убрать timer1.Tick += new EventHandler(timer1_Tick);
Все мы отчасти гении!Но на сколько мы умны настолько же мы и глупы!
Волк вне форума Ответить с цитированием
Старый 23.05.2012, 22:23   #7
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Зачем вам все эти пляски?
Есть системное время, засекли начало потом выводите разничу, одна строка кода...
=master= вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
таймер nattaella Компоненты Delphi 1 22.06.2011 21:59
таймер IvaneOK Общие вопросы C/C++ 7 31.05.2011 20:14
Таймер dnskts Помощь студентам 5 11.06.2010 13:38
таймер в C# Munky Помощь студентам 2 15.04.2010 20:30
Таймер Nitrino Общие вопросы C/C++ 2 29.12.2009 23:17