Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 24.08.2017
Сообщений: 9

Дописать код таймера

25.08.2017, 11:29. Показов 1293. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть вот такой код таймера:
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
        int h, m, s; //часы, минуты, секунды
        private void button4_Click(object sender, EventArgs e)
        {
            h = Convert.ToInt32(textBox3.Text);
            m = Convert.ToInt32(textBox4.Text);
            s = Convert.ToInt32(textBox5.Text);
 
            timer1.Start();
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            s = s - 1; //каждую секунду счетчик таймера секунд уменьшается на 1
            if (s == -1) //если кончается минута, а секундная переменная становится меньше единицы, значит минута уменьшается на единицу, а секундный счетчик начинает с 59
            {
                m = m - 1;
                s = 59;
            }
            if (m == -1) //то же самое для часов
            {
                h = h - 1;
                m = 59;
            }
 
            if (h == 0 && m == 0 && s == 0) // если часы, минуты и секунды в таймере будут равны нулю, значит время, указанное пользователе вышло
            {
                timer1.Stop();
                if (checkBox1.Checked)
                {
                    if (checkBox2.Checked)
                    {
                        MessageBox.Show("Время вышло!");
                    }
                    else
                    {
                        System.Diagnostics.Process.Start("cmd", "/c shutdown -s -f -t 00");
                    }
                }
                else
                {
                    if (checkBox2.Checked)
                    {
                        System.Diagnostics.Process.Start("cmd", "/c shutdown -r -t -f 00");
                    }
                    else
                    {
                        MessageBox.Show("Время вышло!");
                    }
                }
            }
 
            label1.Text = Convert.ToString(h); //выводим таймер на экран, чтобы пользователь наглядно видел, сколько время осталось.
            label3.Text = Convert.ToString(m);
            label5.Text = Convert.ToString(s);
 
        }
        private void button5_Click(object sender, EventArgs e)
        {
            timer1.Stop(); // при нажатии пользователем на кнопку "Стоп" таймер останавливается
        }
        private void button6_Click(object sender, EventArgs e)
        {
            timer1.Stop(); // при нажатии пользователем на кнопку "Сброс" таймер останавливается, а текст в label'ах "сбрасывается" до нуля.
            label1.Text = "000";
            label3.Text = "000";
            label5.Text = "000";
        }
Но он
1)Если задать 0 для часов минут и секунд, то он уйдет в -1 час, а минуты и секунды начнут с 59.
2)Если задать для для секунд например 5000, то он начнет считать эти 5000 в секундах.
Нужно чтоб
1) Если задано часы, минуты, секунды на 0 - то часы не уходили в -.
2) Если задано 5000 секунд - то он конвертировал секунды в минуты, а минуты в часы если нужно. Вот для 5000 секунд если ввели - то это 1 час, 23 минуты, 33 секунды. Должно быть.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.08.2017, 11:29
Ответы с готовыми решениями:

Код для создания таймера
Доброй ночи Уважаемые пользователи этого форума,я новый человек на вашем форуме,и очень нуждаюсь в вашей помощи,помогите пожалуйста мне в...

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

Помогите с дописанием таймера в код
Добрый день. Можно вас попросить дописать код, когда работает HL1 он работал только 1 минуту и выключался (таймер чтоб не забыть его...

2
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
25.08.2017, 12:35
cxs23d,
Урезанный (без проверки чекбоксов) вариант по первому вопросу:
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
private void timer1_Tick(object sender, EventArgs e)
{
            label1.Text = Convert.ToString(h); //выводим таймер на экран, чтобы пользователь наглядно видел, сколько время осталось.
            label3.Text = Convert.ToString(m);
            label5.Text = Convert.ToString(s);
 
            if (h == 0 && m == 0 && s == 0) // если часы, минуты и секунды в таймере будут равны нулю, значит время, указанное пользователе вышло
            {
                timer1.Stop();
                //урезано
            }
 
            if (s == 0) //если кончается минута, а секундная переменная становится меньше единицы, значит минута уменьшается на единицу, а секундный счетчик начинает с 59
            {
                m = m - 1;
                s = 59;
            }
 
            if (m == 0) //то же самое для часов
            {
                h = h - 1;
                m = 59;
            }
            s = s - 1; //каждую секунду счетчик таймера секунд уменьшается на 1
}
0
0 / 0 / 1
Регистрация: 24.08.2017
Сообщений: 9
26.08.2017, 01:56  [ТС]
Даценд, Ясно, вся проблема была только в том что действие было до установки времени на label а не после... ОБлажался...
Вот где-то вот тут вот надо задать чтоб он переводил секунды в минуты и часы
C#
1
2
3
4
5
6
7
8
        private void button4_Click(object sender, EventArgs e)
        {
            h = Convert.ToInt32(textBox3.Text);
            m = Convert.ToInt32(textBox4.Text);
            s = Convert.ToInt32(textBox5.Text);
 
            timer1.Start();
        }
Добавлено через 1 час 26 минут
Даценд, Да снова же...
C#
1
2
3
            label1.Text = Convert.ToString(h); //выводим таймер на экран, чтобы пользователь наглядно видел, сколько время осталось.
            label3.Text = Convert.ToString(m);
            label5.Text = Convert.ToString(s);
Он берет значения из label до того как label изменится на значения textbox. Поэтому введя любое значение >1 - счетчик часов сразу уходит в -1

Добавлено через 14 минут
Даценд, Бошка чет совсем не варит. Решил.
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
        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text = Convert.ToString(h); //выводим таймер на экран, чтобы пользователь наглядно видел, сколько время осталось.
            label3.Text = Convert.ToString(m);
            label5.Text = Convert.ToString(s);
            if (h == 0 && m == 0 && s == 0) // если часы, минуты и секунды в таймере будут равны нулю, значит время, указанное пользователе вышло
            {
                timer1.Stop();
                label1.Text = "000";
                label3.Text = "000";
                label5.Text = "000";
                if (checkBox1.Checked)
                {
                    if (checkBox2.Checked)
                    {
                        MessageBox.Show("Время вышло!");
                    }
                    else
                    {
                        System.Diagnostics.Process.Start("cmd", "/c shutdown -s -f -t 00");
                    }
                }
                else
                {
                    if (checkBox2.Checked)
                    {
                        System.Diagnostics.Process.Start("cmd", "/c shutdown -r -t -f 00");
                    }
                    else
                    {
                        MessageBox.Show("Время вышло!");
                    }
                }
            }
            s = s - 1; //каждую секунду счетчик таймера секунд уменьшается на 1
            if (s == -1) //если кончается минута, а секундная переменная становится меньше единицы, значит минута уменьшается на единицу, а секундный счетчик начинает с 59
            {
                m = m - 1;
                s = 59;
            }
            if (m == -1) //то же самое для часов
            {
                h = h - 1;
                m = 59;
            }
        }
Осталось только конвертировать секунды в минуты а минуты в часы. Если можете, подскажите...

Добавлено через 2 часа 23 минуты
Все, вроде сделал.
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
        int h, m, s; //часы, минуты, секунды
        private void button4_Click(object sender, EventArgs e)
        {
            if (textBox3.Text == "")
            {
                textBox3.Text = "0";
            }
            if (textBox4.Text == "")
            {
                textBox4.Text = "0";
            }
            if (textBox5.Text == "")
            {
                textBox5.Text = "0";
            }
 
            int anInteger;
            anInteger = Convert.ToInt32(textBox5.Text);
            anInteger = int.Parse(textBox5.Text);
 
            int secparce = anInteger;
            int hours = (secparce / 60) / 60;
            int sec1 = secparce - hours * 3600;
            int minuts = sec1 / 60;
            int sec = sec1 - minuts * 60;
            label9.Text = (hours + ":" + minuts + ":" + sec).ToString();
 
            textBox3.Text = Convert.ToString(hours); // Добавляем высчитаное время в textbox ы.
            textBox4.Text = Convert.ToString(minuts);
            textBox5.Text = Convert.ToString(sec);
 
            h = Convert.ToInt32(textBox3.Text); // Конвертируем в int для вычисления времени в таймере и присваиваем значение.
            m = Convert.ToInt32(textBox4.Text);
            s = Convert.ToInt32(textBox5.Text);
            timer1.Start();
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text = Convert.ToString(h); //выводим таймер на экран, чтобы пользователь наглядно видел, сколько время осталось.
            label3.Text = Convert.ToString(m);
            label5.Text = Convert.ToString(s);
            if (h == 0 && m == 0 && s == 0) // если часы, минуты и секунды в таймере будут равны нулю, значит время, указанное пользователем вышло
            {
                timer1.Stop();
                label1.Text = "000";
                label3.Text = "000";
                label5.Text = "000";
                if (checkBox1.Checked)
                {
                    if (checkBox2.Checked)
                    {
                        MessageBox.Show("Время вышло!");
                    }
                    else
                    {
                        System.Diagnostics.Process.Start("cmd", "/c shutdown -s -f -t 00");
                    }
                }
                else
                {
                    if (checkBox2.Checked)
                    {
                        System.Diagnostics.Process.Start("cmd", "/c shutdown -r -t -f 00");
                    }
                    else
                    {
                        MessageBox.Show("Время вышло!");
                    }
                }
            }
            s = s - 1; //каждую секунду счетчик таймера секунд уменьшается на 1
            if (s == -1) //если кончается минута, а секундная переменная становится меньше единицы, значит минута уменьшается на единицу, а секундный счетчик начинает с 59
            {
                m = m - 1;
                s = 59;
            }
            if (m == -1) //то же самое для часов
            {
                h = h - 1;
                m = 59;
            }
        }
        private void button5_Click(object sender, EventArgs e)
        {
            timer1.Stop(); // при нажатии пользователем на кнопку "Стоп" таймер останавливается
        }
        private void button6_Click(object sender, EventArgs e)
        {
            timer1.Stop(); // при нажатии пользователем на кнопку "Сброс" таймер останавливается, а текст в label'ах "сбрасывается" до нуля.
            label1.Text = "000";
            label3.Text = "000";
            label5.Text = "000";
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.08.2017, 01:56
Помогаю со студенческими работами здесь

Нужен код таймера самоуничтожения сайта
Бывают случаи, когда сталкиваешься с нечестными на руку клиентами, или просто с дураками, не не умеющими вести свои дела. На эти случаи у...

Дописать код
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <conio.h> int i, **math; int main() { ...

Дописать код
Хочу, чтобы программа считала: это пока что сам сделал, добавьте пожалуйста 1 и 2 #include <iostream.h> #include...

Дописать код
Друзья вопрос стоит такого характера! program 3; uses crt; type LPKmondi=record lastname:string; name:string; ...

Дописать код
Ребята выручайте, приезжают депутаты в г.Че и надо одну простую вещь сделать, но я не web программист и в этом есть проблема. Суть есть...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru