Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/37: Рейтинг темы: голосов - 37, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 10.02.2012
Сообщений: 41

Реализовать работу таймера для обратного отсчета времени

14.05.2012, 23:12. Показов 7488. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При запуске главной формы нажимаем кнопку "Начать" -> должна появиться форма "Указать время в минутах", где необходимо выбрать любое кол-во минут, например 3 минуты, после чего подтверждаем нажатием кнопки "Ок" и снова появляется главная форма, где идёт обратный отсчёт времени. Помогите реализовать.
Вложения
Тип файла: rar Работа_таймера.rar (33.3 Кб, 107 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.05.2012, 23:12
Ответы с готовыми решениями:

Как реализовать 3 таймера обратного отсчета?
Добрый день! Подскажите, кто знает, как реализовать 3 таймера обратного отсчета в формате чч:мм:сс, мм:сс и мм:сс:мс, этот код почему-то...

Cоздание таймера обратного отсчёта
Здравствуйте, у меня вопрос: хочу создать тестовую программу с 14 вопросами, т.е. 14 форм, основная особенность - это введения времени на...

Реализовать таймер обратного отсчета
подскажите пожалуйста чтобы вывести таймер обратного отсчета в часах минутах секундах что надо сделать int max =...

13
 Аватар для C17H19NO3
218 / 212 / 63
Регистрация: 17.04.2012
Сообщений: 382
15.05.2012, 01:27
если исправите текст в лейблах вместо "00" поставите "0" - тогда все будет работать. иначе нужно эти два нол писать в разные лейблы и будет немного больше кода. если ОЧЕНЬ нужно - смогу доделать, но думаю это не критически важно.

код для Form1

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
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (lblM1.Text == "0" && lblS1.Text == "0")
            {
                lblCh1.Text = (Convert.ToInt16(lblCh1.Text) - 1).ToString();
                lblM1.Text = (Convert.ToInt16(60) - 1).ToString();
                lblS1.Text = (Convert.ToInt16(61) - 1).ToString();
            }
            if (lblS1.Text == "0")
            {
                lblM1.Text = (Convert.ToInt16(lblM1.Text) - 1).ToString();
                lblS1.Text = (Convert.ToInt16(61) - 1).ToString();
            }
            lblS1.Text = (Convert.ToInt16(lblS1.Text) - 1).ToString();
            if (lblCh1.Text == "0" && lblM1.Text == "0" && lblS1.Text == "0")
            {
                MessageBox.Show("THE END");
            }
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            frm2.ShowDialog();
 
            if (frm2.DialogResult == DialogResult.OK)
            {
                lblM1.Text = frm2.TEXTBOXX;
                timer1.Interval = 1000;
                timer1.Enabled = true;
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            lblCh1.Text = "0";
            lblM1.Text = "0";
            lblS1.Text = "0";
        }
    }

код для Form2


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public partial class Form2 : Form
    {
        public string TEXTBOXX
        {
            get
            {
               return textBox1.Text;
            }
        }
        
        public Form2()
        {
            InitializeComponent();
        }
 
    }
1
0 / 0 / 0
Регистрация: 10.02.2012
Сообщений: 41
15.05.2012, 02:53  [ТС]
Когда вставляю код для второй формы.. появляется ошибка
0
 Аватар для C17H19NO3
218 / 212 / 63
Регистрация: 17.04.2012
Сообщений: 382
15.05.2012, 09:12
сорри, забыл написать. Во второй форме для кнопки "ОК" в Properties, свойство DialogResult поставте "ОК".
1
0 / 0 / 0
Регистрация: 10.02.2012
Сообщений: 41
15.05.2012, 22:17  [ТС]
спасибо огромное) получилось

Добавлено через 8 минут
А почему...когда время заканчивается, появилось сообщение, я нажимаю крестик и закрываю его, а время продолжает идти дальше, да ещё и с -1... как сделать так, чтобы вот закрываю я сообщение и всё время по 00:00:00 останавливается и не идёт?
0
 Аватар для C17H19NO3
218 / 212 / 63
Регистрация: 17.04.2012
Сообщений: 382
16.05.2012, 00:01
да, затупил))

C#
1
2
3
4
timer1.Enabled = false;
MessageBox.Show("THE END");
// можно и без "return" роботать тоже будет.
return;
Добавлено через 28 минут
вот еще доделал несколько мелочей. может пригодится.

во второй форме виделите текст бокс зайдите во вкладку события и щелкнить два раза по "KeyPress". В обработчик вставите код:

//в текст бокс вы сможете ввести только цыфры, буквы печататься не будут
C#
1
e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9,.,\b]");
А в главной форме в баттон вставте этот код.

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
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            frm2.ShowDialog();
 
            if (frm2.DialogResult == DialogResult.OK)
            {
                // проверка. если ничего небыло введено - выдаст ошибку
                if (frm2.TEXTBOXX.Length == 0)
                {
                    timer1.Enabled = false;
                    MessageBox.Show("Введите количество минут");
                    lblCh1.Text = "0";
                    lblM1.Text = "0";
                    lblS1.Text = "0";
                    return;
                }
 
                // проверка. если минут было введено больше чем 60 - то будет выделена целая часть от этого числа и отправлена в часы, остаток в минуты.
                if (Convert.ToInt32(frm2.TEXTBOXX) > 60)
                {
                    //определение целой части
                    int hour = (Convert.ToInt32(frm2.TEXTBOXX)) / 60;
                    //определение остатка
                    int minute = (Convert.ToInt32(frm2.TEXTBOXX)) % 60;
                    lblCh1.Text = hour.ToString();
                    lblM1.Text = minute.ToString();
                }
                else
                {
                    lblM1.Text = frm2.TEXTBOXX;
                }
                timer1.Interval = 1000;
                timer1.Enabled = true;
            }
        }
1
0 / 0 / 0
Регистрация: 10.02.2012
Сообщений: 41
16.05.2012, 00:47  [ТС]
Вообще отлично) спасибо) появился ещё вопрос...Добавила на главную форму dataGridView1...написать в шапке таблицы: в первом столбце Номер, во втором Время, в третьем Статус. В ячейке (столбца Номер) написать 1, в ячейке (столбца Время) идёт отсчёт времени, которое в TextBox1, в ячейке (столбца Статус) написать Свободно/Занято(свободно, если время 00:00:00(ячейка закрашена зелёным цветом), занято если отсчёт идёт 0:1:59(ячейка закрашена красным цветом)). Как реализовать?
Вложения
Тип файла: rar Работа_таймера.rar (59.0 Кб, 56 просмотров)
0
 Аватар для C17H19NO3
218 / 212 / 63
Регистрация: 17.04.2012
Сообщений: 382
16.05.2012, 02:00
там внутри под 9 студию написано, конвертнешь

вот еще добавите две последние строчки в обработчике кнопки "Конец"

C#
1
2
3
4
5
6
7
8
9
10
 private void button2_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            lblCh1.Text = "0";
            lblM1.Text = "0";
            lblS1.Text = "0";
            dataGridView1.Rows[0].Cells[1].Value = "0:0:0";
            dataGridView1.Rows[0].Cells[2].Style.BackColor = Color.Green;
            dataGridView1.Rows[0].Cells[2].Value = "Свободно";
        }
Вложения
Тип файла: rar Работа_таймера(dataGridView).rar (69.4 Кб, 49 просмотров)
1
0 / 0 / 0
Регистрация: 10.02.2012
Сообщений: 41
16.05.2012, 03:31  [ТС]
время заканчивается, потом появляется сообщение, а ячейка не поменяла цвет на зелёный, что снова свободно...?
0
 Аватар для C17H19NO3
218 / 212 / 63
Регистрация: 17.04.2012
Сообщений: 382
16.05.2012, 09:10
в обработчике таймера, где идет проверка обнуления всех лейблов добавте две строчки датагрида

C#
1
2
3
4
5
6
7
8
9
if (lblCh1.Text == "0" && lblM1.Text == "0" && lblS1.Text == "0")
            {
                dataGridView1.Rows[0].Cells[2].Style.BackColor = Color.Green;
                dataGridView1.Rows[0].Cells[2].Value = "Свободно";
                timer1.Enabled = false;
                MessageBox.Show("THE END");
                return;
                
            }
1
0 / 0 / 0
Регистрация: 10.02.2012
Сообщений: 41
16.05.2012, 14:07  [ТС]
спасибо большое)

Добавлено через 1 минуту
спасибо большое) всё работает как надо)
0
0 / 0 / 0
Регистрация: 10.02.2012
Сообщений: 41
16.05.2012, 15:32  [ТС]
Добавила ещё один такой же таймер... но не получается сделать так, чтобы в dataGridView1 были записаны значения (второго таймера), но уже в следующей строке. В первой строке значения ячеек: 1 - 00:00:00 - Свободно, во второй надо, чтобы было 2 - 00:00:00 - Свободно. в общем пыталась сделать по аналогии и запуталась...
Вложения
Тип файла: rar работа_таймера.rar (124.2 Кб, 14 просмотров)
0
 Аватар для C17H19NO3
218 / 212 / 63
Регистрация: 17.04.2012
Сообщений: 382
16.05.2012, 19:10
комент. Индексация в дата грид идет с нуля.

C#
1
2
dataGridView1.Rows[координата ячейки по первой строчке].Cells[координата ячейки по по третьему столбцу].Value = "Свободно";
dataGridView1.Rows[0].Cells[2].Value = "Свободно";
C#
1
2
dataGridView1.Rows[координата ячейки по второй строчке].Cells[координата ячейки по по второму столбцу столбцу].Value = "Свободно";
dataGridView1.Rows[1].Cells[1].Value = "Свободно";
Вложения
Тип файла: rar Работа_таймера(2_timer).rar (75.2 Кб, 52 просмотров)
1
0 / 0 / 0
Регистрация: 10.02.2012
Сообщений: 41
17.05.2012, 00:50  [ТС]
разобралась) спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.05.2012, 00:50
Помогаю со студенческими работами здесь

Таймер обратного отсчета и вывод в Label времени в формате чч:мм:сс
Помогите реализовать. У меня есть таймер в 3 часа (10800000 ms) Мне нужно чтобы этот отсчет выводил в лабейл время оставшиеся например:...

Как сделать таймер обратного отсчёта с выводом оставшегося времени в поле
Не подскажите как сделать таймер обратного отсчёта с выводом оставшегося времени в поле? Я слышал что можно представить время дробными...

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

Цикл таймера обратного отсчета
Привет, друзья! Помогите зациклить таймер обратного отсчета. Сейчас счетчик выставляется вручную и отматывает до 0, затем сам...

Создание таймера обратного отсчёта
Здравствуйте, помогите пожалуйста реализовать следующее Есть HTML страница с кнопкой, при нажатии который переходим, либо же вылетает...


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

Или воспользуйтесь поиском по форуму:
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