Пишем простой ежедневник на 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);
}
Скриншот приложения в работе
08.04.2026, 16:04 [246 просмотров]

