Для работы с датами в Windows Forms имеются элементы DateTimePicker и MonthCalendar.
DateTimePicker представляет раскрывающийся по нажатию календарь, в котором можно выбрать дату. собой элемент, который с помощью перемещения ползунка позволяет вводить числовые значения.
Наиболее важные свойства DateTimePicker:
Format: определяет формат отображения даты в элементе управления. Может принимать следующие значения:
Custom
: формат задается разработчиком
Long
: полная дата
Short
: дата в сокращенном формате
Time
: формат для работы с временем
CustomFormat: задает формат отображения даты, если для свойства Format
установлено
значение Custom
MinDate: минимальная дата, которую можно выбрать
MaxDate: наибольшая дата, которую можно выбрать
Value: определеяте текущее выбранное значение в DateTimePicker
Text: представляет тот текст, который отображается в элементе
При выборе даты элемент генерирует событие ValueChanged
. Например, обработаем данное собатие и присвоим выбранное значение
тексту метки:
public partial class Form1 : Form { public Form1() { InitializeComponent(); dateTimePicker1.Format = DateTimePickerFormat.Time; dateTimePicker1.ValueChanged+=dateTimePicker1_ValueChanged; } private void dateTimePicker1_ValueChanged(object sender, EventArgs e) { label1.Text = String.Format("Вы выбрали: {0}", dateTimePicker1.Value.ToLongTimeString()); } }
Свойство Value хранит объект DateTime, поэтому с ним можно работать как и с любой другой датой. В данном случае выбранная дата преобразуется в строку времени.
В вышеприведенном случае значение dateTimePicker1.Value.ToLongTimeString()
аналогично тому тексту, который отображается в элементе.
И мы могли бы написать так:
label1.Text = String.Format("Вы выбрали: {0}", dateTimePicker1.Text);
С помощью MonthCalendar также можно выбрать дату, только в данном случае этот элемент представляет сам календарь, который не надо раскрывать:
Рассмотрим некоторые основные свойства элемента.
Свойства выделения дат:
AnnuallyBoldedDates: содержит набор дат, которые будут отмечены жирным в календаре для каждого года
BoldedDates: содержит набор дат, которые будут отмечены жирным (только для текущего года)
MonthlyBoldedDates: содержит набор дат, которые будут отмечены жирным для каждого месяца
Добавление выделенных дат делается с помощью определенных методов (как и удаление):
monthCalendar1.AddBoldedDate(new DateTime(2015, 05, 21)); monthCalendar1.AddBoldedDate(new DateTime(2015, 05, 22)); monthCalendar1.AddAnnuallyBoldedDate(new DateTime(2015, 05, 9)); monthCalendar1.AddMonthlyBoldedDate(new DateTime(2015, 05, 1));
Для снятия выделения можно использовать аналоги этих методов:
monthCalendar1.RemoveBoldedDate(new DateTime(2015, 05, 21)); monthCalendar1.RemoveBoldedDate(new DateTime(2015, 05, 22)); monthCalendar1.RemoveAnnuallyBoldedDate(new DateTime(2015, 05, 9)); monthCalendar1.RemoveMonthlyBoldedDate(new DateTime(2015, 05, 1));
Свойства для определения дат в календаре:
MinDate: определяет минимальную дату для выбора в календаре
MaxDate: задает наибольшую дату для выбора в календаре
FirstDayOfWeek: определяет день недели, с которого должна начинаться неделя в календаре
SelectionRange: определяет диапазон выделенных дат
SelectionEnd: задает конечную дату выделения
SelectionStart: определяет начальную дату выделения
ShowToday: при значении true отображает внизу календаря текущую дату
ShowTodayCircle: при значении true текущая дата будет обведена кружочком
TodayDate: определяет текущую дату. По умолчанию используется системная дата на компьютере, но с помощью данного свойства мы можем ее изменить
Например, при установке свойств:
monthCalendar1.TodayDate= new DateTime(2015, 05, 22); monthCalendar1.ShowTodayCircle = true; monthCalendar1.ShowToday = false; monthCalendar1.SelectionStart = new DateTime(2015, 05, 1); monthCalendar1.SelectionEnd = new DateTime(2015, 05, 11);
будет следующее отображение календаря:
Наиболее интересными событиями элемента являются события DateChanged
и DateSelected
, которые возникают
при изменении выбранной в элементе даты. Однако надо учитывать, что выбранная дата будет представлять первую дату из диапазона выделенных дат:
public partial class Form1 : Form { public Form1() { InitializeComponent(); monthCalendar1.DateChanged += monthCalendar1_DateChanged; } void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e) { label1.Text = String.Format("Вы выбрали: {0}", e.Start.ToLongDateString()); // или так - аналогичный код //label1.Text = String.Format("Вы выбрали: {0}", monthCalendar1.SelectionStart.ToLongDateString()); } }