@goldolov_na

Как сделать таймер в Windows Forms?

Напишите это все кодом
Есть кнопка,таймер и label(куда будет выводиться отсчет времени)
Нужно по нажатию на кнопку запускался таймер на 5 минут
и в label выводился посекундный вычет и так пока время не истечет
когда время истекло выводится сообщение:"Время вышло!"
  • Вопрос задан
  • 9000 просмотров
Решения вопроса 1
Vlad_IT
@Vlad_IT
Front-end разработчик
Вариант 1 - запускаете два таймера, один с интервалом 1 секунда, который будет менять значения с label, второй с интервалом 5 минут, который будет отключать оба таймера, и писать сообщение.
Вариант 2 - запускаете таймер, сразу запоминаете текущее время в отдельную переменную, и каждую секунду сравниваете это значение с текущем временем, если разница будет 5 минут, то останавливаете таймер и выводите сообщение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Тебе нужно немного изменить код под себя и всё.
using System;
using System.Windows.Forms;
 
namespace TempWinFormProject {
    public partial class Parent : Form {
        public Parent() {
            InitializeComponent();
 
            tm = new Timer();
            tm.Tick += new EventHandler(tm_Tick);
            tm.Interval = 1000;
        }
 
        Timer tm = null;
        int startValue = 0;
 
        private string Int2StringTime(int time) {
            int hours = (time - (time % (60 * 60))) / (60 * 60);
            int minutes = (time - time % 60) / 60 - hours * 60;
            int seconds = time - hours * 60 * 60 - minutes * 60;
            return String.Format("{0:00}:{1:00}:{2:00}", hours, minutes, seconds);
        }
 
        void tm_Tick(object sender, EventArgs e) {
            if(startValue != 0) {
                label1.Text = Int2StringTime(startValue);
                startValue--;
            } else {
                (sender as Timer).Stop();
                (sender as Timer).Dispose();
                MessageBox.Show("BadaBoom!");
            }
        }
 
        private void buttonStart_Click(object sender, EventArgs e) {
            startValue = 60 * 60 * (int)numericUpDownHour.Value + 60 * (int)numericUpDownMin.Value + (int)numericUpDownSec.Value;
            tm.Start();
        }
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы