Остановка таймера при отображении диалога - C#
Формулировка задачи:
Добрый день. Подскажите, хочу написать свой таймер, который будет служить в качестве часов. При создании экземпляра окна создается сам таймер. Ниже приведу его код. Вопрос в том, если будет выведено диалоговое окно, то таймер остановится, или продолжит свою работу? Мне нужно, чтобы таймер останавливался при открытии диалогового окна, а при закрытии диалогового окна - продолжал работу.
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace Test
- {
- public class Time
- {
- public static string Day
- {
- get
- {
- string rc = "";
- switch (d)
- {
- case 0: rc = "Понедельник"; break;
- case 1: rc = "Вторник"; break;
- case 2: rc = "Среда"; break;
- case 3: rc = "Четверг"; break;
- case 4: rc = "Пятница"; break;
- case 5: rc = "Суббота"; break;
- case 6: rc = "Воскресенье"; break;
- }
- return rc;
- }
- }
- public static string Hours
- {
- get
- {
- string hours = Convert.ToString(h);
- if (hours.Length == 1) hours = hours.Insert(0, "0");
- return hours;
- }
- }
- public static string Minutes
- {
- get
- {
- string minutes = Convert.ToString(m);
- if (minutes.Length == 1) minutes = minutes.Insert(0, "0");
- return minutes;
- }
- }
- static short d; // day [0;7)
- static short h; // hours [0,24)
- static short m; // minutes [0,60)
- static Timer timer = new Timer();
- public Time()
- {
- h = 0;
- m = 0;
- timer.Interval = 100;
- timer.Tick += Timer_Tick;
- timer.Start();
- }
- private static void Timer_Tick(object sender, EventArgs e)
- {
- if (++m == 60)
- {
- m = 0;
- if (++h == 24)
- {
- h = 0;
- if (++d == 7) d = 0;
- }
- }
- }
- public static void Stop() => timer.Stop();
- public static void Start() => timer.Start();
- public static string GetDay() => Day;
- public static string GetHours() => Hours;
- public static string GetMinutes() => Minutes;
- public static string GetTime() => ($"{Hours}:{Minutes}");
- public override string ToString() => (Day + ", " + GetTime());
- }
- }
Решение задачи: «Остановка таймера при отображении диалога»
textual
Листинг программы
- void StopTimerAndShowForm(Form form)
- {
- tm.Stop();
- form.ShowDialog(this);
- tm.Start();
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д