using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using System.Security.Cryptography.X509Certificates; namespace Сalendar { public partial class Form1 : Form { public Form1() { InitializeComponent(); if (File.Exists("date.dat")) //Заполнение событий из файла (Если существует) { listBox1.Items.Clear(); // очистка списка перед заполнением. using (System.IO.StreamReader sr = new System.IO.StreamReader("date.dat")) // Чтение событий из файла и добавление их в список. { while (!sr.EndOfStream) { listBox1.Items.Add(sr.ReadLine()); } } } } List ev = new List(); //Создание списка класса Events private void timer1_Tick(object sender, EventArgs e) //Timer для ввывода текущей даты и времени. { label3.Text = DateTime.Now.ToString("dd.MM.yyyy"); //Вывод текущей полной даты label4.Text = DateTime.Now.ToString("HH:mm:ss"); //Вывод времени if (DateTime.Now.DayOfWeek.ToString() == "Monday") //Условия для переводы текущего дня недели { label7.Text = "Понедельник"; } else if (DateTime.Now.DayOfWeek.ToString() == "Tuesday") { label7.Text = "Вторник"; } else if (DateTime.Now.DayOfWeek.ToString() == "Wednesday") { label7.Text = "Среда"; } else if (DateTime.Now.DayOfWeek.ToString() == "Thursday") { label7.Text = "Четверг"; } else if (DateTime.Now.DayOfWeek.ToString() == "Friday") { label7.Text = "Пятница"; } else if (DateTime.Now.DayOfWeek.ToString() == "Saturday") { label7.Text = "Суббота"; } else { label7.Text = "Воскресенье"; } if (radioButton1.Checked) //Проверка выбора праздника и отключение не нужных элементов интерфейса { label8.Visible = false; dateTimePicker1.Visible = false; dateTimePicker2.Visible = false; } else //Включение интерфейса { label8.Visible = true; dateTimePicker1.Visible = true; dateTimePicker2.Visible = true; } if (checkBox1.Checked) //Смена имение кнопки взавизимости от отметки на редактирование события { button1.Text = "Изменить"; } else { button1.Text = "Добавить"; } } private void button1_Click(object sender, EventArgs e) //Метод для записи события { if (checkBox1.Checked == false) // Условия для проверки отметки редактирования { label9.Text = ""; //очистка окна ошибки if (radioButton1.Checked) //Условие для добавления праздников { ev.Add(new Events(textBox1.Text, monthCalendar1.SelectionStart.ToString("dd.MM.yyyy"), monthCalendar1.SelectionEnd.ToString("dd.MM.yyyy"), "", "")); //Запись в список класса Events названия события и диапазона даты события textBox1.Text = ""; //Очистка текстового поля if (monthCalendar1.SelectionStart.ToString("dd.MM.yyyy") == monthCalendar1.SelectionEnd.ToString("dd.MM.yyyy")) // Условия для проверки указан был диапазон или единственная дата, для вывода в окно списка. { listBox1.Items.Add($"Праздник: {ev.Last().getEventName()}, начало: {ev.Last().getStart_Date()}, на весь день"); } else { listBox1.Items.Add($"Праздник: {ev.Last().getEventName()}, начало: {ev.Last().getStart_Date()} по {ev.Last().getEnd_Date()}, на весь день"); } } if (radioButton2.Checked) //Условие для добавление напоминания { ev.Add(new Events(textBox1.Text, monthCalendar1.SelectionStart.ToString("dd.MM.yyyy"), monthCalendar1.SelectionEnd.ToString("dd.MM.yyyy"), dateTimePicker1.Value.ToString("HH:mm"), dateTimePicker2.Value.ToString("HH:mm"))); //Запись в список класса Events названия события и диапазона даты события textBox1.Text = ""; //Очистка текстового поля if (monthCalendar1.SelectionStart.ToString("dd.MM.yyyy") == monthCalendar1.SelectionEnd.ToString("dd.MM.yyyy") && dateTimePicker1.Value.ToString() == dateTimePicker2.Value.ToString()) // Условия для проверки указан был диапазон или единственная дата, а также проверка указания времени для вывода в окно списка. { listBox1.Items.Add($"Напоминание: {ev.Last().getEventName()}, начало: {ev.Last().getStart_Date()}, c {ev.Last().getTime_Start()} и на весь день"); } else if (monthCalendar1.SelectionStart.ToString("dd.MM.yyyy") != monthCalendar1.SelectionEnd.ToString("dd.MM.yyyy") && dateTimePicker1.Value.ToString() == dateTimePicker2.Value.ToString()) { listBox1.Items.Add($"Напоминание: {ev.Last().getEventName()}, начало: {ev.Last().getStart_Date()} по {ev.Last().getEnd_Date()}, c {{ev.Last().getTime_Start()}} и на весь день"); } else if (monthCalendar1.SelectionStart.ToString("dd.MM.yyyy") == monthCalendar1.SelectionEnd.ToString("dd.MM.yyyy") && dateTimePicker1.Value.ToString() != dateTimePicker2.Value.ToString()) { listBox1.Items.Add($"Напоминание: {ev.Last().getEventName()}, начало: {ev.Last().getStart_Date()}, c {ev.Last().getTime_Start()} по {ev.Last().getTime_End()}"); } else if (monthCalendar1.SelectionStart.ToString("dd.MM.yyyy") != monthCalendar1.SelectionEnd.ToString("dd.MM.yyyy") && dateTimePicker1.Value.ToString() != dateTimePicker2.Value.ToString()) { listBox1.Items.Add($"Напоминание: {ev.Last().getEventName()}, начало: {ev.Last().getStart_Date()} по {ev.Last().getEnd_Date()}, c {ev.Last().getTime_Start()} по {ev.Last().getTime_End()}"); } } using (System.IO.StreamWriter sw = new System.IO.StreamWriter("date.dat")) //Создание файла и записи в него сохранненых событий { for (int l = 0; l < listBox1.Items.Count; l++)//цикл для прохождения по списку и записи списка в файл. sw.WriteLine(listBox1.Items[l].ToString()); } } else { int i = listBox1.SelectedIndex; //запись индекса элемента списка который будет отредактирован label9.Text = ""; //очистка ошибочного окна if (i < 0) //проверка на наличие выделенного элемента { label9.Text = "Выберите соботие из списка!"; //ввыод ошибки пользователю label9.ForeColor = System.Drawing.Color.Red; // Выделение красным цветом сообщения об ошибке } else { listBox1.Items.RemoveAt(i); //удаление из списка события для дальнейшей его перезаписи. if (radioButton1.Checked) //проверка выбора праздника { ev.Add(new Events(textBox1.Text, monthCalendar1.SelectionStart.ToString("dd.MM.yyyy"), monthCalendar1.SelectionEnd.ToString("dd.MM.yyyy"), "", "")); //Запись в список класса Events названия события и диапазона даты события textBox1.Text = ""; //Очистка текстового поля if (monthCalendar1.SelectionStart.ToString("dd.MM.yyyy") == monthCalendar1.SelectionEnd.ToString("dd.MM.yyyy")) // Условия для проверки указан был диапазон или единственная дата, для вывода в окно списка. { listBox1.Items.Insert(i, $"Праздник: {ev.Last().getEventName()}, начало: {ev.Last().getStart_Date()}, на весь день"); } else { listBox1.Items.Insert(i, $"Праздник: {ev.Last().getEventName()}, начало: {ev.Last().getStart_Date()} по {ev.Last().getEnd_Date()}, на весь день"); } } if (radioButton2.Checked) //Условие для добавления праздников { ev.Add(new Events(textBox1.Text, monthCalendar1.SelectionStart.ToString("dd.MM.yyyy"), monthCalendar1.SelectionEnd.ToString("dd.MM.yyyy"), dateTimePicker1.Value.ToString("HH:mm"), dateTimePicker2.Value.ToString("HH:mm"))); //Запись в список класса Events названия события и диапазона даты события textBox1.Text = ""; //Очистка текстового поля if (monthCalendar1.SelectionStart.ToString("dd.MM.yyyy") == monthCalendar1.SelectionEnd.ToString("dd.MM.yyyy") && dateTimePicker1.Value.ToString() == dateTimePicker2.Value.ToString()) //Условия для проверки указан был диапазон или единственная дата, а также проверка указания времени для вывода в окно списка. { listBox1.Items.Insert(i, $"Напоминание: {ev.Last().getEventName()}, начало: {ev.Last().getStart_Date()}, c {ev.Last().getTime_Start()} и на весь день"); } else if (monthCalendar1.SelectionStart.ToString("dd.MM.yyyy") != monthCalendar1.SelectionEnd.ToString("dd.MM.yyyy") && dateTimePicker1.Value.ToString() == dateTimePicker2.Value.ToString()) { listBox1.Items.Insert(i, $"Напоминание: {ev.Last().getEventName()}, начало: {ev.Last().getStart_Date()} по {ev.Last().getEnd_Date()}, c {{ev.Last().getTime_Start()}} и на весь день"); } else if (monthCalendar1.SelectionStart.ToString("dd.MM.yyyy") == monthCalendar1.SelectionEnd.ToString("dd.MM.yyyy") && dateTimePicker1.Value.ToString() != dateTimePicker2.Value.ToString()) { listBox1.Items.Insert(i, $"Напоминание: {ev.Last().getEventName()}, начало: {ev.Last().getStart_Date()}, c {ev.Last().getTime_Start()} по {ev.Last().getTime_End()}"); } else if (monthCalendar1.SelectionStart.ToString("dd.MM.yyyy") != monthCalendar1.SelectionEnd.ToString("dd.MM.yyyy") && dateTimePicker1.Value.ToString() != dateTimePicker2.Value.ToString()) { listBox1.Items.Insert(i, $"Напоминание: {ev.Last().getEventName()}, начало: {ev.Last().getStart_Date()} по {ev.Last().getEnd_Date()}, c {ev.Last().getTime_Start()} по {ev.Last().getTime_End()}"); } } } using (System.IO.StreamWriter sw = new System.IO.StreamWriter("date.dat")) // перезапись файла с сохраненными событиями { for (int l = 0; l < listBox1.Items.Count; l++)//цикл для прохождения по списку и записи списка в файл. sw.WriteLine(listBox1.Items[l].ToString()); } } } private void button2_Click(object sender, EventArgs e) //Кнопка для очистки списка заданий { listBox1.Items.Remove(listBox1.SelectedItem);//удаляет выбранное событие из списка using (System.IO.StreamWriter sw = new System.IO.StreamWriter("date.dat")) // Перезапись файла с удаленным событием. { for (int l = 0; l < listBox1.Items.Count; l++) sw.WriteLine(listBox1.Items[l].ToString()); } if (listBox1.Items.Count == 0) //Если все события были удаленны, то удаляется файл. { System.IO.File.Delete("date.dat"); } } private void Form1_Load(object sender, EventArgs e) { } } }