using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
private List<Interval> intervals = new List<Interval>();
public Form1()
{
InitializeComponent();
}
// метод, вызываемый по событию Timer.Tick
private void timer1_Tick(object sender, EventArgs e)
{
// вызываем метот CheckInterval и он вернет нужный цвет текста
label1.ForeColor = CheckInterval(DateTime.Now, intervals);
// выводим текущее время
label1.Text = DateTime.Now.ToLongTimeString();
}
// метод, возвращяющий цвет в зависимости от попадания в интервал
public Color CheckInterval(DateTime now, List<Interval> timeTable)
{
Color color = Color.Green;
foreach (Interval interval in timeTable)
{
if (now > interval.LeftBound && now < interval.RightBound)
{
color = Color.Red;
break;
}
}
return color;
}
// метод, вызываемый при нажатии кнопки
private void button1_Click(object sender, EventArgs e)
{
// читаем файл с описанием интервалов в массив строк
string[] intervals_t = File.ReadAllLines("intervals.conf");
// для каждой строки в массиве ...
foreach (string s in intervals_t)
{
// делим по разделителю $, получаем массив bounds, где в первом элементе левая граница, а во втором — правая
string[] bounds = s.Split('$');
// добавляем интервал в общий список
intervals.Add(new Interval(DateTime.Parse(bounds[0]), DateTime.Parse(bounds[1])));
}
// привязываем обработчик событий к таймеру
timer1.Tick += timer1_Tick;
// запускаем таймер
timer1.Start();
}
}
public class Interval
{
public DateTime LeftBound { get; set; }
public DateTime RightBound { get; set; }
public Interval(DateTime left, DateTime right)
{
LeftBound = left;
RightBound = right;
}
}
}
10:43:00$10:44:00
10:45:00$10:46:00