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

Как отформатировать строку, чтобы таймер показывал 00:00:00

26.09.2014, 21:11. Показов 1881. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, вот мой код, а как сделать так, чтобы таймер был 00:00:00.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public partial class Математика : Form
    {
        List<List<string>> atr;
        Dictionary<int, bool> sp;
        private int question = 0;
        private int[] arr;
        Timer timer = new Timer();
        int count = 10;
        public Математика()
        {
            InitializeComponent();
            timer.Interval = 1000;
            timer.Start();
            button3.Text = "" + count + "";
            timer.Tick += (a, b) =>
                {
                    if (count != 0)
                    { count--; button3.Text = "" + count + ""; }
                    else
                    {
                        button2.PerformClick();
                    }
                };
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.09.2014, 21:11
Ответы с готовыми решениями:

Как сделать, чтобы браузер не показывал меню?
Ситуация такая: на сайте резмещены картинки, и не слишком хочется что бы их драли. Как сделать что бы страница отображалась в окне браузера...

Отформатировать строку так, чтобы после каждой точки стоял пробел
Форматирование текста. Дан текст, состоящий из предложений, разделяемых точками. Напишите программу, производящую следующее форматирование:...

Как сделать так чтобы dbimage показывал файлы jpg?
я с помощью метода insertRecord добавляю картинку в dbimage но если он расширения jpg то он не показывается, а если bmp то показывает....

10
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
26.09.2014, 22:18

Не по теме:

Вот удивительно, лямбда-выражения вставлять можешь, а метод ToString() не знаешь


Таймер, вернее, текст на кнопке, должен отображать оставшееся время в секундах? Для отображения временного промежутка есть специальный тип TimeSpan. Попробуй так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private DateTime start;
public Математика()
    {
        InitializeComponent();
        timer.Interval = 1000;
        timer.Start();
        start = DateTime.Now;
        button3.Text = string.Format("hh\:mm\:ss", DateTime.Now - start);
        timer.Tick += (a, b) =>
            {
                if (count-- != 0)
                    button3.Text = string.Format("hh\:mm\:ss", DateTime.Now - start);
                else
                {
                    timer.Stop();
                    button2.PerformClick();
                }
            };
    }
0
2 / 2 / 1
Регистрация: 05.05.2012
Сообщений: 159
26.09.2014, 22:25  [ТС]
Не вышло, ругается на "hh\:mm\:ss"
Ошибка 1 Нераспознанная управляющая последовательность C:\Users\Павел\Desktop\Учёба\ОС\Proekt\T esting\Testing\Математика.cs 34 46 Testing
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
26.09.2014, 22:26
Ну, писал на коленке. Забыл. Исправь на:
C#
1
string.Format(@"hh\:mm\:ss", DateTime.Now - start)
0
2 / 2 / 1
Регистрация: 05.05.2012
Сообщений: 159
26.09.2014, 22:52  [ТС]
Я походу что-то не то делаю.. Код ламается, и не хочет компилироваться.
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
namespace Testing
{
    public partial class Математика : Form
    {
        List<List<string>> atr;
        Dictionary<int, bool> sp;
        private int question = 0;
        private int[] arr;
        Timer timer = new Timer();
        int count = 10;
        private DateTime start;
public Математика()
    {
        InitializeComponent();
        timer.Interval = 1000;
        timer.Start();
        start = DateTime.Now;
        button3.Text = string.Format(@"hh\:mm\:ss", DateTime.Now - start);
        timer.Tick += (a, b) =>
            {
                if (count-- != 0)
                    button3.Text = string.Format(@"hh\:mm\:ss", DateTime.Now - start);
                else
                {
                    timer.Stop();
                    button2.PerformClick();
                }
            };
    }
                arr = Shuffle();
                XDocument xd = XDocument.Load("Math.xml");
                //считываем .xml в List<List<string>> - список вопросов. 
                //Внутренний список - строки из каждого вопроса 
                atr = xd.Root.Elements()
                    .Select(x => x.Elements()
                    .Select(u => u.Value).ToList()).ToList();
                //словарь, в котором храним "правильность" ответов
               // MessageBox.Show(atr.Count.ToString());
                sp = new Dictionary<int, bool>();
                Print();
            };
 
            button2.Click += (a, b) =>
            {
                //получаем
                int index = indexOfChecked();
                count = 10;
                button2.Text = "Далее";
                setChecked();
                //проверка на наличие "+" в варианте ответа
                if (int.Parse(atr[arr[question]][atr[arr[question]].Count - 1]) == index) sp[arr[question]] = true;
                else sp[arr[question]] = false;
                //если вопрос не последний, переходим к следующему
                if (question < arr.Length - 1)
                {
                    question++;
                    Print();
                }
                else
                    MessageBox.Show(String.Format("Ви відповіли на всі питання! Ваша оцінка: {0}",
                        sp.Where(x => x.Value).Count()));
            };
            this.FormClosed += (a, b) =>
                {
                    foreach (var t in OwnedForms)
                        t.Close();
                };
        }
Добавлено через 20 минут
Код скомпилировался, но на кнопке не идёт таймер, а просто hh\:m
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
26.09.2014, 23:01
Ок. В последнем твоём коде замени строки с 17 по 28 на это:
C#
1
2
3
4
5
6
7
8
9
10
11
12
start = DateTime.Now.AddSeconds(count);
button3.Text = string.Format(@"{0:hh\:mm\:ss}", DateTime.Now - start);
timer.Tick += (a, b) =>
    {
        if (count-- != 0)
            button3.Text = string.Format(@"{0:hh\:mm\:ss}", DateTime.Now - start);
        else
        {
            timer.Stop();
            button2.PerformClick();
        }
    };
0
2 / 2 / 1
Регистрация: 05.05.2012
Сообщений: 159
26.09.2014, 23:08  [ТС]
Ага, работает, но, первый вопрос отчёт был, а на второй вопрос уже нет таймера, и дальше не переключается.
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
26.09.2014, 23:13
Цитата Сообщение от zZzTipo4ekzZz Посмотреть сообщение
уже нет таймера, и дальше не переключается.
Ну так таймер у тебя включается в конструкторе формы. Так что решай, где его нужно включать.
0
2 / 2 / 1
Регистрация: 05.05.2012
Сообщений: 159
26.09.2014, 23:18  [ТС]
Эм.. не понял..
И что это за сайт "купи коляску" ?)
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
26.09.2014, 23:27
Ну что же тут непонятного? У тебя таймер отсчитывает время для ответа на вопрос, так? По окончании отсчёта, нажимается button2, так? Внутри метода клика ты что-то там анализируешь и, в частности, устанавливаешь заново интервал отсчёта, так? Ну раз ты заново его устанавливаешь, то при переходе к следующему вопросу, нужно опять запускать таймер, так? Вот и включай таймер там, где ты переходишь к следующему вопросу, а не в конструкторе формы, как это сделано сейчас.

Не по теме:

Весь код засунут в конструктор формы, лямбда-выражения, LINQ, XML, а логика работы между тем не продумана.

0
2 / 2 / 1
Регистрация: 05.05.2012
Сообщений: 159
27.09.2014, 21:29  [ТС]
Задача решенна!

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public partial class Математика : Form
    {
        List<List<string>> atr;
        Dictionary<int, bool> sp;
        private int question = 0;
        private int[] arr;
        Timer timer = new Timer();
        int count = 10;
public Математика()
        {
            InitializeComponent();
            timer.Interval = 1000;
            timer.Start();
            button3.Text = string.Format("0:0:{0}", count); 
            timer.Tick += (a, b) =>
            {
                if (count-- != 0)
                button3.Text = string.Format("0:0:0{0}", count);
                else
                {
                    button2.PerformClick();
                }
            };
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.09.2014, 21:29
Помогаю со студенческими работами здесь

Как настроить отладчик чтобы он показывал все элементы массива?
чтобы не создавать новой темы спрошу тут как настроить дебаггер чтобы он показывал все элементы массива а не тока первый и тот к которому...

Как сделать запрос чтобы показывал день рождения сотрудника в месяце?
Как сделать запрос чтобы при введении месяц(май), показывал день рождения сотрудника в месяце? Допустим в мае у тех людей день рождения в ...

как сделать запрос чтобы показывал только женщин или мужчин?
как сделать запрос чтобы показывал список только женщин или мужчин? Допустим есть 2 таблицы: 1 таблица с ФИО, а 2 таблица только пол. как...

Как отформатировать строку?
Мой апплет передает на сервлет и потом получает обратно данные. При вводе отправленная строка имеет вид 'To Servlet with method...

Как отформатировать строку в Lua?
-- У меня есть строка. Я хочу после определенного элемента вставить допустим букву. Например local a = &quot;Hello gays&quot;; --...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru