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

Форматированный вывод таймера в Label

24.07.2018, 19:31. Показов 3747. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Возникла такая проблема:
Не могу вывести правильно в лейбл показания таймера.
А именно, мне нужно, чтобы при условии Seconds < 10 секунды выводились вида 09,08,07 и так далее...
То же самое и с минутами...
Вот код.
Всё работает, проблема только с условиями, они просто не работают.
Секунды и минуты не форматируются как надо
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void GameTimer_Tick(object sender, EventArgs e)
{
Seconds -= 1;
if(Seconds == -1)
{
Minits -= 1;
Seconds = 59;
}
if(Seconds < 10)
{
this.QuestionLabel.Text = "Вопрос: №" + CurrentQuestion + " и " + CurrentSumm + " рублей (0" + Minits.ToString() + ":0" + Seconds.ToString() + ")";
}
if(Minits == 0 && Seconds == 0)
{
this.GameTimer.Stop();
this.QuestionLabel.Text = "Вопрос: №" + CurrentQuestion + " и " + CurrentSumm + " рублей (0" + Minits.ToString() + ":0" + Seconds.ToString() + ")";
}
this.QuestionLabel.Text = "Вопрос: №" + CurrentQuestion + " и " + CurrentSumm + " рублей (0" + Minits.ToString() + ":" + Seconds.ToString() + ")";
}
Понятно, что можно вставлять нолики в строку и так далее...
Но может есть какой-то более удобный вариант?
Ну или в чём моя ошибка в этом варианте?
Заранее большое спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.07.2018, 19:31
Ответы с готовыми решениями:

Можно ли использовать форматированный текст в Label
Смотрите, Есть код : Second frm = new Second(); frm.Controls.Text = &quot;About programm:...

Форматированный вывод переменных в Label(QT4)
Здравствуйте, Уважаемые Программисты. Делаю программу для решения квадратных уравнений(знаю не ново, но я только учусь). Вопрос...

Форматированный вывод (округление) значения label
Здравствуйте! Задача следующая: нужно в label2 вывести округленное значение y (оставить только 2 знака после запятой). double...

8
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
24.07.2018, 19:41
vlad-mus, Вообще вы разделом ошиблись. GameTimer покажите.
0
0 / 0 / 1
Регистрация: 03.07.2017
Сообщений: 88
24.07.2018, 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
...
System.Windows.Forms.Timer GameTimer = new System.Windows.Forms.Timer();
private int Minits = 10;
private int Seconds = 0;
private Label QuestionLabel = new Label();
...
private void InitTimer()
{
this.GameTimer.Enabled = true;
this.GameTimer.Interval = 1000;
this.GameTimer.Tick += GameTimer_Tick;
}
...
private void Start()
{
GameTimer.Start();
}
...
private void GameTimer_Tick(object sender, EventArgs e)
{
Seconds -= 1;
if(Seconds == -1)
{
Minits -= 1;
Seconds = 59;
}
if(Seconds < 10)
{
this.QuestionLabel.Text = "Вопрос: №" + CurrentQuestion + " и " + CurrentSumm + " рублей (0" + Minits.ToString() + ":0" + Seconds.ToString() + ")";
}
if(Minits == 0 && Seconds == 0)
{
this.GameTimer.Stop();
this.QuestionLabel.Text = "Вопрос: №" + CurrentQuestion + " и " + CurrentSumm + " рублей (0" + Minits.ToString() + ":0" + Seconds.ToString() + ")";
}
this.QuestionLabel.Text = "Вопрос: №" + CurrentQuestion + " и " + CurrentSumm + " рублей (0" + Minits.ToString() + ":" + Seconds.ToString() + ")";
}
это всё, что касается таймера.
Код работает, проблема только с выводом в лейбл минут и секунд, когда они меньше нуля...
нужно, чтобы они выводились не одной цифрой, а с нулём впереди.
01:05, 01:04...
0
 Аватар для Wolflind
127 / 107 / 31
Регистрация: 17.03.2016
Сообщений: 445
Записей в блоге: 1
24.07.2018, 19:55
самый простой вариант так

C#
1
2
3
4
string minits = Minits.ToString();
 
if(minits .Length = 1)
      minits = "0"+minits;
и вообще советую использовать хотя бы String.Format или $"минуты {minits}"

Добавлено через 3 минуты
а вот кстати https://metanit.com/sharp/tutorial/7.5.php
C#
1
2
string result2 = String.Format("{0:d4}", number);
Console.WriteLine(result2); // 0023
0
Эксперт .NET
 Аватар для Rius
13165 / 7725 / 1679
Регистрация: 25.05.2015
Сообщений: 23,535
Записей в блоге: 14
24.07.2018, 20:00
Таймер обратного отсчёта вообще не так делается...
0
0 / 0 / 1
Регистрация: 03.07.2017
Сообщений: 88
24.07.2018, 20:04  [ТС]
$"минуты {minits}" к сожалению использовать не получается
Компелятор категорически не принимает такую форму записи строки.
.Net FrameWork 4.7.2

Добавлено через 3 минуты
А как нужно делать подобный таймер?
0
Эксперт .NET
 Аватар для Rius
13165 / 7725 / 1679
Регистрация: 25.05.2015
Сообщений: 23,535
Записей в блоге: 14
24.07.2018, 20:07
Задать длительность периода.
Запомнить время начала, опционально.
Вычислить время завершения и запомнить.
По таймеру вычислять разницу между временем завершения и текущим.
Это TimeSpan. Из него и часы/минусы/секунды можно вытащить, и отформатировать его в строку сразу (без вытаскивания).
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
24.07.2018, 20:50
Лучший ответ Сообщение было отмечено vlad-mus как решение

Решение

Опередили меня.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DateTime gameOver = DateTime.Now.AddSeconds(5);
 
private TimeSpan timeLeft()
        {
            return gameOver - DateTime.Now;
        }
 
private void GameTimer_Tick(object sender, EventArgs e)
        {
            this.QuestionLabel.Text = timeLeft().Seconds.ToString();
 
            if (timeLeft() < TimeSpan.Zero)
            {
                GameTimer.Stop();
                MessageBox.Show("Game Over!");
            }
        }
Добавлено через 14 минут
Забыл. Строку
C#
1
this.QuestionLabel.Text = timeLeft().Seconds.ToString();
Заменить на
C#
1
this.QuestionLabel.Text = timeLeft().ToString(@"mm\:ss")
0
0 / 0 / 1
Регистрация: 03.07.2017
Сообщений: 88
24.07.2018, 21:02  [ТС]
Огромное спасибо всем за ответы и предложения!
PoPsa85, ваш вариант помог решить проблему.
Большое спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.07.2018, 21:02
Помогаю со студенческими работами здесь

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

Как и можно ли вообще вывести в Label форматированный текст
Помогите пожалуйста, есть программа-кроссворд. Основная часть работы сделана, осталось несколько нерешённых задач оформления, просьба...

На какой компонент выводить форматированный текст вместо Label?
Хм-м-м... Текст загружается в RichEdit, оттуда рассовывается по лейблам. Главная цель - сохранить надстрочные и подстрочные знаки, на...

Вывести значения таймера в Label
Друзья, у меня есть небольшая игрушка, так вот в ней я установил таймер - её нужно пройти за определённое время. Если не успел -...

Смена текста в label с использованием таймера
Встала задача такого плана - изменение текста в label посредством таймера. Сложность в том, что смена текста должна проходить не через...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru