Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/125: Рейтинг темы: голосов - 125, средняя оценка - 4.91
18 / 18 / 2
Регистрация: 05.12.2013
Сообщений: 95

Обратный отсчет времени

13.12.2013, 18:28. Показов 26822. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!
Небольшая просьба!
Напишите пожалуйста код для обратного отсчета времени, а то на других форумах не понятно, какие типы имеют переменные (обрывки кода)
Буду благодарен!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.12.2013, 18:28
Ответы с готовыми решениями:

Обратный отсчет времени в цикле
Приветствую. Собственно, тема вопроса: В форму нужно повесить пять лейблов, независимых друг от друга, которые будут считать по...

Как сделать обратный отсчёт времени 24:00 до 00:00
Как сделать обратный отсчёт времени от 24:00 до 00:00.

Обратный отсчет времени в формате "H:mm:ss"
Доброе время суток. Вот такой вопрос: например у меня есть 90 мин. мне нужно, чтобы в Label велся отсчет времени в формате...

13
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
13.12.2013, 18:49
C#
1
2
3
4
5
6
7
8
9
10
 var dateTime = DateTime.Now;
            DateTime dt = dateTime.AddMinutes(-1);
            while (dateTime>dt)
            {
                var ticks = (dateTime - dt).Ticks;
                Console.WriteLine(new DateTime(ticks).ToString("mm:HH:ss"));
                Thread.Sleep(100);
                dt = dt.AddSeconds(1);
            }
            Console.ReadKey();
0
18 / 18 / 2
Регистрация: 05.12.2013
Сообщений: 95
13.12.2013, 19:14  [ТС]
Код не работает! можно как-нибудь без задержки и консоли?
Форум C# Windows Forms
1
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
13.12.2013, 19:50
Класс таймера обратного отсчёта
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
    class CountDownTimer
    {
        private DateTime endTime;
        private TimeSpan timeRest;
        private double duration = Double.NaN;
        /// <summary>Оставшееся время отсчёта</summary>
        public TimeSpan TimeRest { get; }
 
        private System.Timers.Timer timer;
        /// <summary>
        /// Создание нового экземпляра таймера обратного отсчёта с указанным временем окончания
        /// </summary>
        /// <param name="EndTime">Время окончания отсчёта</param>
        public CountDownTimer(DateTime EndTime)
        {
            endTime = EndTime;
            timer = new System.Timers.Timer(100);
            timer.Elapsed += timer_Elapsed;
        }
        /// <summary>
        /// Создание нового экземпляра таймера обратного отсчёта с заданной длительностью
        /// </summary>
        /// <param name="d">Длительность обратного отсчёта</param>
        public CountDownTimer(double d)
        {
            duration = d;
            timer = new System.Timers.Timer(100);
            timer.Elapsed += timer_Elapsed;
        }
 
        void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            timeRest = endTime.Subtract(e.SignalTime);
            CountDown(this, new EventArgs());
            if (timeRest <= TimeSpan.Zero)
            {
                timer.Stop();
                CountDownEnd(this, new EventArgs());
            }
        }
        /// <summary>
        /// Запуск таймера обратного отсчёта
        /// </summary>
        public void Start()
        {
            if (duration != Double.NaN)
                endTime = DateTime.Now.AddSeconds(duration);
            timer.Start();
        }
        /// <summary>
        /// Остановка таймера обратного отсчёта
        /// </summary>
        public void Stop()
        {
            timer.Stop();
        }
        /// <summary>
        /// Событие окончания отсчёта
        /// </summary>
        public event EventHandler CountDownEnd;
        /// <summary>
        /// Событие отсчёта
        /// </summary>
        public event EventHandler CountDown;
    }

Пример использования (консоль, но это не важно)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    class Program
    {
        static CountDownTimer ct = new CountDownTimer(10);
        static bool end = false;
        static void Main(string[] args)
        {
            ct.CountDown += ct_CountDown;
            ct.CountDownEnd += ct_CountDownEnd;
            ct.Start();
            do { } while (end);
            Console.ReadLine();
        }
 
        static void ct_CountDownEnd(object sender, EventArgs e)
        {
            Console.WriteLine();
            Console.WriteLine("Время истекло!");
            end = true;
        }
 
        static void ct_CountDown(object sender, EventArgs e)
        {
            TimeSpan t = (sender as CountDownTimer).TimeRest;
            Console.Write("\r{0:00}:{1:00}:{2:00}", t.Hours, t.Minutes, t.Seconds);
        }
    }
2
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
13.12.2013, 20:15
Цитата Сообщение от РЕН1998 Посмотреть сообщение
Форум C# Windows Forms
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
public partial class Form1 : Form
    {
        private DateTime _dateTime2;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (!timer1.Enabled)
            {
                _dateTime2 = DateTime.Now.AddMinutes(1);
            }
            timer1.Enabled = !timer1.Enabled;
            button1.Text = timer1.Enabled ? "Stop" : "Start";
            
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            var dateTime = DateTime.Now;
            if (dateTime < _dateTime2)
            {
                var timeSpan = (_dateTime2 - dateTime);
 
                label1.Text =
                    textBox1.Text =
                    string.Format("\r{0:00}:{1:00}:{2:00}", (int)timeSpan.TotalHours, (int)timeSpan.TotalMinutes,
                                  (int)timeSpan.TotalSeconds);
            }
            else
            {
                button1_Click(null, EventArgs.Empty);
            }
        }
 
        private void InitializeComponent()
        {
            this.label1 = new System.Windows.Forms.Label();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.button1 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // timer1
            // 
            this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(12, 9);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(0, 13);
            this.label1.TabIndex = 0;
            // 
            // textBox1
            // 
            this.textBox1.Location = new System.Drawing.Point(12, 25);
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(100, 20);
            this.textBox1.TabIndex = 1;
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(37, 51);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(75, 23);
            this.button1.TabIndex = 2;
            this.button1.Text = "Start";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(248, 192);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.label1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);
            this.PerformLayout();
 
        }
 
        private System.Windows.Forms.Timer timer1;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.Button button1;
    }
1
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
13.12.2013, 20:28
Цитата Сообщение от Grishaco Посмотреть сообщение
C#
1
2
string.Format("\r{0:00}:{1:00}:{2:00}", (int)timeSpan.TotalHours, (int)timeSpan.TotalMinutes,
(int)timeSpan.TotalSeconds);
Тут следует использовать Hours, Minutes и Seconds
2
 Аватар для CoMMoN86
-5 / 5 / 1
Регистрация: 18.05.2013
Сообщений: 503
03.09.2014, 18:02
А если я хочу задать в секундах свое время как мне это сделать? например не 1минута а 5 сек
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
04.09.2014, 00:21
CoMMoN86, ну так таймер так и сделан, что время задаётся в секундах
0
 Аватар для CoMMoN86
-5 / 5 / 1
Регистрация: 18.05.2013
Сообщений: 503
04.09.2014, 10:17
ViterAlex, так а где там задать время я не увидел что то
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
04.09.2014, 12:05
C#
1
static CountDownTimer ct = new CountDownTimer(10);
Вот эта строчка создаёт таймер обратного отсчета на 10 секунд
0
 Аватар для CoMMoN86
-5 / 5 / 1
Регистрация: 18.05.2013
Сообщений: 503
04.09.2014, 16:42
ViterAlex, сори за троллинг, но не увидел где там данная строка или как применить эту, за то увидел эту строку
C#
1
_dateTime2 = DateTime.Now.AddMinutes(10);
и что то мне подсказало что это и есть нужное мне, заменить на это
C#
1
_dateTime2 = DateTime.Now.AddSeconds(10);
.
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
05.09.2014, 00:55
CoMMoN86, я привёл код класса и пример его использования в этом сообщении. На него и опирайся
0
7 / 5 / 4
Регистрация: 02.06.2012
Сообщений: 248
05.09.2014, 16:30
Нужно создать новый Windows Forms application и вставить код туда, это называется fully copy-paste code.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace Timer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            Start();
        }
 
        Button button1 = new Button();
        System.Windows.Forms.Timer timer1;
 
        private void Start()
        {
            this.BackColor = Color.Black;
 
            button1.Enabled = true;
            button1.Parent = this;
            button1.BackColor = Color.Black;
            button1.ForeColor = Color.White;
            button1.Location = new Point(this.Width / 2 - button1.Width / 2, this.Height / 2 - button1.Height / 2);
 
            timer1 = new System.Windows.Forms.Timer();
            timer1.Interval = 100;
            timer1.Tick += Timer;
            timer1.Enabled = true;
        }
 
        int i = 100;
 
        private void Timer(object sender, EventArgs e)
        {
            button1.Text = i--.ToString();
        }
    }
}
0
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
24.10.2019, 13:52
Цитата Сообщение от ViterAlex Посмотреть сообщение
Пример использования (консоль, но это не важно)
Приветствую... Я не пойму, вот с вашим кодом всегда выводятся нули... При полной копипасте.
Поправил... TimeRest не сетился в коде.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.10.2019, 13:52
Помогаю со студенческими работами здесь

Отсчет времени по таймеру
Нужна помощь! Необходимо в dateTimePicker задать определенное значение времени HH:mm:ss (не текущее) и чтоб в дальнейшем отображалось в...

Timer реализовать обратный временной отсчёт в формате "00:00:00"
При помощи компоненты Timer реализовать обратный временной отсчёт. Начало отсчёта вводится с клавиатуры. При достижении 00:00:00 вывести...

Отсчёт времени до ближайшего события
всем привет, есть несколько событий со своим временеи, надо сделать так чтобы был отсчет времени доближайшего события.А когда событие...

Отсчет времени до наступления новых суток
Программа должна выводит текущее время, а также вычислять, сколько часов и минут осталось до наступления следующих суток.

Сделать повторы нажатия кнопки по таймеру и выводить в Label отсчет этого времени
Всем Добрый вечер Друзья ! Возникла такая проблема как можно сделать повторы нажатия кнопки по таймеру и выводить в лабел отсчет этого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru