БлогNot. Пишем простой ежедневник на Windows Forms C#

Пишем простой ежедневник на Windows Forms C#

Смысл этого приложения-наброска в том, что у нас есть компонента MonthCalendar с именем calendar, программно созданный DateTimePicker dtpDate, многострочное текстовое поле TextBox и метка lblWarning для вывода сообщений.

Мы собираемся по выбору даты выводить, редактировать и сохранять произвольный связанный с ней текст, а также сохранять и загружать данные XML в следующем формате:

<?xml version="1.0" encoding="utf-8"?>
<Notes> 
  <Note>
   <Date>2026-04-01</Date>
   <Content>Проверка функции загрузки</Content>
  </Note>
</Notes>

XML-файл создаётся в памяти при старте приложения, а при завершении программы по событию FormClosing (или выбору инструмента "Сохранить") данные записываются на диск, что уменьшает количество обменов с ним. Остальное время манипуляции производятся в памяти с объектом XDocument. Сохранение и восстановление должно происходить автоматически (если в коде не осталось багов), а даты, для которых есть записи, выделяются в календаре жирным начертанием.

Кнопки верхней панели: открыть (импорт) - сохранить (принудительно) - очистить - вырезать выделенное или всё - копировать выделенное или всё - вставить из буфера. Приложение будет использовано для доработки уже не мной, надеюсь. :)

Исходники достаточно подробно закомментированы, объём кода примерно 350 строк.

Чтобы не заморачиваться с CDATA, мы просто "кодируем" многострочные заметки:

  // При сохранении заменяем переводы строк на специальные маркеры
  private string EncodeLineBreaks (string text) {
   return text.Replace ("\r\n", "##BR##")
              .Replace ("\n", "##BR##");
  }

  // При загрузке восстанавливаем
  private string DecodeLineBreaks (string text) {
   return text.Replace ("##BR##", Environment.NewLine);
  }

 Скачать проект MyDiary на C# Windows Forms (Visual Studio 2019 и выше) в архиве .zip, развернуть в новую папку (19 Кб)

Скриншот приложения в работе
Скриншот приложения в работе

08.04.2026, 16:04 [246 просмотров]


теги: textprocessing дата программирование c# учебное xml

К этой статье пока нет комментариев, Ваш будет первым