Member 13133439 Ответов: 2

Таймер инкремента C# VISUAL STUDIO 10s


Новичок в кодировании и везде искал пример этого. Мне нужно создать программу, которая увеличивает метку с интервалом в 10 секунд. Как только число на этикетке достигнет 60-х, мне нужно, чтобы оно перешло в метку минут (от"00:00:60" до "00:01:00") и так далее.

Как только время определено, нажимается кнопка "Пуск", и таймер отсчитывает время до 00:00:00.

Программа-это микроволновая печь, если это помогает визуально.
Любая помощь была бы потрясающей, спасибо!

Что я уже пробовал:

// button1-это приращение на 10 секунд. label4-это секунды. label5 будет составлять минуты.
частная button1_Click_1 недействительным(объект отправителя, EventArgs в электронной)
{
тип int счетчик = инт.Синтаксический анализ(label4.Текст);
счетчик=счетчик+10;
label4.Текст = счетчик.Метод toString();

ZurdoDev

В интернете есть масса примеров. Просто используйте таймер.

Member 13133439

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

ZurdoDev

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

Member 13133439

Я уже около 4 дней пытаюсь создать этот код. Часть, с которой я борюсь, - это переход секунд на метку минут, но не для таймера, а для приращения для начала

2 Ответов

Рейтинг:
2

Dave Kreskowiak

Часть вашей проблемы заключается в том, что вы используете элементы управления (в частности, метку) для хранения ваших данных. Не делай этого. Элементы управления никогда не должны быть частью вашей модели данных. Они существуют для редактирования и отображения данных в вашей модели, а не для того, чтобы быть вашей моделью данных.


Рейтинг:
1

OriginalGriff

Начните с таймера и не беспокойтесь о подсчете.
Вместо этого попробуйте это:

private DateTime startedAt;
private void StartTimer()
    {
    Timer ShowElapsedTime = new Timer();
    ShowElapsedTime.Interval = 10000;     // 10 seconds
    ShowElapsedTime.Tick += ShowElapsedTime_Tick;
    ShowElapsedTime.Start();
    startedAt = DateTime.Now;
    }

void ShowElapsedTime_Tick(object sender, EventArgs e)
    {
    TimeSpan diff = DateTime.Now - startedAt;
    txtHours.Text = diff.Hours.ToString();
    txtMinutes.Text = diff.Minutes.ToString();
    txtSeconds.Text = diff.Seconds.ToString();
    }


Member 13133439

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

Огромное спасибо

OriginalGriff

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

Поверь мне: я был там, делал это! :смеяться:

Member 13133439

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

В любом случае спасибо

[no name]

"параметры, которые установил мой лектор", - вот ваша настоящая проблема. Мы понятия не имеем, какие ограничения накладывает на вас ваш учитель. Мы знаем только то, что *вы* говорите с нами. И вы еще не описали реальную проблему, и все, что вы показали нам, - это несколько случайных битов кода, которые не имеют никакого отношения к тому, в чем на самом деле заключается ваша проблема.

OriginalGriff

"Неполитически правильно" - это правильно - мы не знаем, чего Вы нам не говорите!
Если ваш наставник хочет, чтобы вы сделали это одним способом, то это домашнее задание: а это значит, что мы не даем вам код!
Но... Если у вас есть" счетчик секунд " - то есть тот, к которому вы добавляете десять секунд каждый раз, когда обновляете свои метки, - вычислить количество часов, минут и секунд очень просто:

часы = счетчик / (60 * 60);
минуты = (счетчик - (часы * 60 * 60)) / 60
секунды = модуль счетчика 60

Попробуйте: посмотрите, что вы получите.