Как сделать таймер в c windows forms

Разбираем создание таймера на языке программирования C# в приложении Windows Forms. Полный исходный код с подробными комментариями можно будет скачать внизу страницы.

Для начала в Windows Forms создаём внешнюю оболочку программы. У нас она выглядит вот так:

Здесь у нас 8 Label’ов, 3 TextBox’a, 3 Buttom’a и сам Timer.

Примечание: при переносе элемента Timer в форму, на неё ничего не появляется. Лишь в нижней части окна программы под формой появляется значок , не пугайтесь.

Щёлкнем на значок таймера  и в окне «Свойства» в группе «Поведение» устанавливаем значение параметра Interval равным 1000. Данный параметр определяет длину тика таймера в миллисекундах, указав 1000, мы сделали один тик равным одной секунде.

После оформления и настройки приступаем к коду. Вводим целочисленные переменные h — часы, m- минуты, s — секунды.

Затем дважды щёлкаем мышью на кнопке «Старт» и переходим на участок кода, отвечающий за клик на эту кнопку.

Туда мы пишем следующий код:

h = Convert.ToInt32(textBox1.Text);

m = Convert.ToInt32(textBox2.Text);

s = Convert.ToInt32(textBox3.Text);

timer1.Start();

То есть мы считываем с TextBox’ов данные, которые ввёл туда пользователь, и после этого включаем таймер. Время пошло.

Также нам надо настроить счёт времени самого таймера. Для этого дважды кликаем на элементе  и внутри тела кода, в который нас отправило, пишем:

private void timer1_Tick(object sender, EventArgs e)

        {

            s = s 1;

            if (s == 1)

            {

                m = m 1;

                s = 59;

            }

Здесь мы настраиваем таймер таким образом, чтобы каждую секунду переменная s уменьшалась на единицу. Если s становится меньше нуля, значит прошла минута, следовательно, m должна уменьшаться на единицу, а отсчёт с секундами s снова начнётся с 59.

То же самое мы делаем с часами и минутами:

if (m==-1)

      {

          h = h 1;

          m = 59;

      }

Теперь позаботимся о том, что случится, когда время, указанное пользователем, выйдет:

if (h==0 && m==0 && s==0)

     {

          timer1.Stop();

          MessageBox.Show(«Время вышло!»);

      }

Как только часы, минуты и секунды будут вместе ровняться нулю, мы выведем пользователю окно с предупреждением об этом.

А чтобы пользователь мог видеть, как идёт время, и как отсчитываются часы, минуты и секунды, мы вынесем всё вышепроисходящее на экран при помощи label’ов:

label1.Text = Convert.ToString(h);

label3.Text = Convert.ToString(m);

label5.Text = Convert.ToString(s);

Теперь надо разобраться с кнопками «Стоп» и «Сброс». В первом случае при нажатии на кнопку пользователем, таймер просто останавливается и может быть возобновлён после нажатия на кнопку «Старт». При нажатии на вторую кнопку счётчики сбрасываются и при нажатии на «Старт», отчёт начнётся заново.

Код кнопки «Стоп»:

private void button2_Click(object sender, EventArgs e)

        {

            timer1.Stop();

        }

Тут всё просто и понятно.

В кнопке «Сброс» нам надо помимо остановки сбросить значения переменных до нулей:

private void button3_Click(object sender, EventArgs e)

        {

            timer1.Stop();

            label1.Text = «0»;

            label3.Text = «0»;

            label5.Text = «0»;

        }

Программа готова. Таймер на C#:

Скачать исходник

Использование Timer в C# Windows Forms

В разработке приложений на платформе Windows Forms в C# часто возникает необходимость выполнять задачи через регулярные интервалы времени. Для этого используется компонент Timer. Этот компонент позволяет запускать определенные действия через заданные промежутки времени, что особенно полезно для создания анимаций, обновления данных или выполнения периодических проверок.

Основные концепции Timer

Компонент Timer в Windows Forms предоставляет простой способ управления временными интервалами в приложении. Основные характеристики Timer включают:

  • Интервал: Время в миллисекундах между тиками таймера.
  • Событие Tick: Событие, которое происходит каждый раз, когда интервал таймера истекает.
  • Запуск и остановка: Методы для запуска и остановки таймера.

Как добавить Timer в проект

  1. Добавление Timer через дизайнер:
  2. Откройте ваш проект в Visual Studio.
  3. Перейдите на вкладку «Toolbox» (Ящик с инструментами).
  4. Найдите компонент Timer и перетащите его на форму.

  5. Настройка свойств Timer:

  6. Выберите компонент Timer на форме.
  7. В окне свойств установите значение для Interval (например, 1000 миллисекунд для интервала в одну секунду).
  8. Дважды щелкните на компоненте Timer, чтобы создать обработчик события Tick.

Пример использования Timer

Рассмотрим простой пример использования Timer для обновления текста на кнопке каждую секунду:

using System;
using System.Windows.Forms;

namespace TimerExample
{
    public partial class Form1 : Form
    {
        private int counter = 0;

        public Form1()
        {
            InitializeComponent();
            timer1.Interval = 1000; // Установите интервал в 1000 миллисекунд (1 секунда)
            timer1.Tick += Timer1_Tick;
            timer1.Start(); // Запустите таймер
        }

        private void Timer1_Tick(object sender, EventArgs e)
        {
            counter++;
            button1.Text = "Счетчик: " + counter.ToString();
        }
    }
}

Объяснение кода

  1. Инициализация Timer: В конструкторе формы устанавливается интервал таймера и назначается обработчик события Tick.
  2. Обработчик события Tick: Каждый раз, когда таймер «тикает» (то есть интервал истекает), выполняется код внутри Timer1_Tick. В данном примере счетчик увеличивается, и текст кнопки обновляется.
  3. Запуск Timer: Таймер запускается с помощью метода Start().

Дополнительные возможности

  • Остановка таймера: Вы можете остановить таймер с помощью метода Stop().
  • Одноразовый таймер: Если вам нужно выполнить действие только один раз через определенный интервал, вы можете остановить таймер в обработчике события Tick.

Заключение

Компонент Timer в Windows Forms предоставляет мощный и простой способ управления временными интервалами в вашем приложении. Он позволяет легко выполнять повторяющиеся задачи, такие как обновление пользовательского интерфейса, выполнение фоновых операций или создание анимаций. Использование Timer помогает сделать ваше приложение более динамичным и отзывчивым.

Также, рекомендую видеокурс Программирование на C# с Нуля до Гуру, в котором подробнее рассказано о различных способах создания программ на C#

  • Создано 19.03.2025 13:05:49

  • Михаил Русаков

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так:

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Последнее обновление: 31.10.2015

TrackBar

TrackBar представляет собой элемент, который с помощью перемещения ползунка позволяет вводить числовые значения.

Некоторые важные свойства TrackBar:

  • Orientation: задает ориентацию ползунка — расположение по горизонтали или по вертикали

  • TickStyle: задает расположение делений на ползунке

  • TickFrequency: задает частоту делений на ползунке

  • Minimum: минимальное возможное значение на ползунке (по умолчанию 0)

  • Maximum: максимальное возможное значение на ползунке (по умолчанию 10)

  • Value: текущее значение ползунка. Должно находиться между Minimum и Maximum

Свойство TickStyle может принимать ряд значений:

  • None: деления отсутствуют

  • Both: деления расположены по обеим сторонам ползунка

  • BottomRight: у вертикального ползунка деления находятся справа, а у горизонтального — снизу

  • TopLeft: у вертикального ползунка деления находятся слева, а у горизонтального — сверху (применяется по умолчанию)

К наиболее важным событиям элемента следует отнести событие Scroll, которое позволяет обработать перемещение
ползунка от одного деления к другому. Что может быть полезно, если нам надо, например, устанавливать соответствующую громкость звука в
зависимости от значения ползунка, либо какике-нибудь другие настройки:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
		// установка обработчика события Scroll
        trackBar1.Scroll+=trackBar1_Scroll;
    }

    private void trackBar1_Scroll(object sender, EventArgs e)
    {
        label1.Text = String.Format("Текущее значение: {0}", trackBar1.Value);
    }
}

Timer

Timer является компонентом для запуска действий, повторяющихся через определенный промежуток времени. Хотя он не является
визуальным элементом, но его аткже можно перетащить с Панели Инструментов на форму:

Наиболее важные свойства и методы таймера:

  • Свойство Enabled: при значении true указывает, что таймер будет запускаться вместе с запуском формы

  • Свойство Interval: указывает интервал в миллисекундах, через который будет срабатывать обработчик события Tick, которое есть у таймера

  • Метод Start(): запускает таймер

  • Метод Stop(): останавливает таймер

Для примера определим простую форму, на которую добавим кнопку и таймер. В файле кода формы определим следующий код:

public partial class Form1 : Form
{
    int koef = 1;
    public Form1()
    {
        InitializeComponent();

        this.Width = 400;
        button1.Width = 40;
        button1.Left = 40;
        button1.Text = "";
        button1.BackColor = Color.Aqua;

        timer1.Interval = 500; // 500 миллисекунд
        timer1.Enabled = true;
        button1.Click += button1_Click;
        timer1.Tick += timer1_Tick;
    }
    // обработчик события Tick таймера
    void timer1_Tick(object sender, EventArgs e)
    {
        if (button1.Left == (this.Width-button1.Width-10))
        {
            koef=-1;
        }
        else if (button1.Left == 0)
        {
            koef = 1;
        }
        button1.Left += 10 *koef;
    }
    // обработчик нажатия на кнопку
    void button1_Click(object sender, EventArgs e)
    {
        if(timer1.Enabled==true)
        {
            timer1.Stop();
        }
        else
        {
            timer1.Start();
        }
    }
}

Здесь в конструкторе формы устанавливаются начальные значения для таймера, кнопки и формы.

Через каждый интервал таймера будет срабатывать обработчик timer1_Tick, в котором изменяется положение
кнопки по горизонтали с помощью свойства button1.Left. А с помощью дополнительной переменной koef
можно управлять направлением движения.

Кроме того, с помощью обраотчика нажатия кнопки button1_Click можно либо остановить таймер (и вместе с ним движение
кнопки), либо опять его запустить.

Индикатор прогресса ProgressBar

Элемент ProgressBar служит для того, чтобы дать пользователю информацию о ходе выполнения какой-либо задачи.

Наиболее важые свойства ProgressBar:

  • Minimum: минимальное возможное значение

  • Maximum: максимальное возможное значение

  • Value: текущее значение элемента

  • Step: шаг, на который изменится значение Value при вызове метода PerformStep

Для имитации работы прогрессбара поместим на форму таймер и в коде формы определим следующий код:

public partial class Form1 : Form
{        
    public Form1()
    {
        InitializeComponent();

        timer1.Interval = 500; // 500 миллисекунд
        timer1.Enabled = true;
        timer1.Tick += timer1_Tick;   
    }
    // обработчик события Tick таймера
    void timer1_Tick(object sender, EventArgs e)
    {
        progressBar1.PerformStep();
    }
}

Нужно сделать,чтобы можно было ставить на 5 минут таймер и это все отображалось в label(например так: 4:58)и с каждой секундой из этого текущего времени минус 1
Есть код:

int i;
        private void Button1_Click(object sender, EventArgs e)
        {
            i = 45;
            label1.Text = i.ToString();
            timer1.Interval = 1000;
            timer1.Enabled = true;
            timer1.Start();
        }

        private void Timer1_Tick(object sender, EventArgs e)
        {
            label1.Text = (--i).ToString();
            if (i < 0)
                timer1.Stop();
        }


  • Вопрос задан

  • 5529 просмотров

int i;
        int tk;
        string c;
        private void Button1_Click(object sender, EventArgs e)
        {
            i = 300;
            c ="5:00";
            
            label1.Text = c;
            timer1.Interval = 1000;
            timer1.Enabled = true;
            timer1.Start();
        }

        private void Timer1_Tick(object sender, EventArgs e)
        {
            
            tk = --i;
            TimeSpan span = TimeSpan.FromMinutes(tk);
            string label = span.ToString(@"hh\:mm");
            label1.Text = label.ToString();
            if (i < 0)
                timer1.Stop();
        }

1. Берем текущее время и прибавляем к нему 5 минут и сохраняем в переменную.
2. Включаем таймер с интервалом в 1/2 секунды, чтобы уменьшить лаг.
3. При каждом срабатывании таймера, берем текущее время и вычитаем его из сохраненной переменной. Получившееся значение типа TimeSpan выводим в label с нужным форматированием.
4. Если текущее время больше сохраненного в переменной вырубаем таймер, так как достигли результата.

Пригласить эксперта

Войдите, чтобы написать ответ


  • Показать ещё
    Загружается…

Минуточку внимания

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Flv чем открыть windows 10
  • Как включить службу активации windows 10
  • Как отключить тачпад когда подключена мышь windows 10
  • Asus direct console windows 10
  • All windows media player skins