Элемент управления DateTimePicker

Если календарь MonthCalendar смотрится в окне формы слишком громоздко, для ввода даты и времени можно использовать более компактные элементы управления класса DateTimePicker.

Создание элемента управления DateTimePicker

Перетащите из инструментальной панели Microsoft Visual Studio .NET значки элемента управления DateTimePicker и разместите их в окне приложения DateTimeApp, как это показано на рис. 6-24.

Рис. 6-24. Использование элемента управления DateTimePicker

 

Элемент управления DateTimePicker создается с помощью конструктора как объект класса System.Windows.Forms.DateTimePicker:

private System.Windows.Forms.DateTimePicker dateTimePicker1;

this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker();

this.dateTimePicker1.Location = new System.Drawing.Point(240, 16);
this.dateTimePicker1.Name = "dateTimePicker1";
this.dateTimePicker1.Size = new System.Drawing.Size(136, 20);
this.dateTimePicker1.TabIndex = 3;

Настройка свойств

Внешний вид окна элемента управления DateTimePicker определяется свойством Format, которое может иметь несколько значений: Long; Short; Time; Custom

Значение Long используется по умолчанию. В этом случае окно элемента управления DateTimePicker содержит поля для ввода числа, месяца и года, а также кнопку со стрелкой. На рис. 6-24 такой элемент управления показан справа вверху.

Пользователь может вводить компоненты даты, непосредственно редактируя их при помощи клавиатуры, увеличивать или уменьшать эти компоненты при помощи клавиш перемещения курсора, а также с помощью кнопки со стрелкой. В последнем случае рядом с окном элемента управления DateTimePicker появится уже знакомый Вам календарь (рис. 6-25).

Рис. 6-25. Ввод даты с помощью календаря

 

После того как пользователь выберет дату, окно календаря исчезнет. Заметим, однако, что таким способом можно выбрать только одну дату, но не диапазон дат.

Формат Short аналогичен формату Long, но вместо названия месяца в окне элемента управления отображается его номер. На рис. 6-24 элемент управления с таким форматом показан вторым сверху в правом углу.

Формат Time используется для ввода времени в часах, минутах и секундах. На рис. 6-24 этот формат имеют два оставшихся элемента управления DateTimePicker.

И, наконец, формат Custom позволяет программисту задать произвольный формат отображения даты и времени в окне элемента управления DateTimePicker.

Чтобы отказаться от ввода даты с помощью календаря, Вы можете установить значение свойства ShowUpDown, равным true. В этом случае вместо одной кнопки со стрелкой в окне элемента управления DateTimePicker появятся две кнопки, с помощью которых пользователь сможет увеличивать или уменьшать отдельные компоненты даты и времени.

Окно DateTimePicker можно снабдить флажком, установив значение свойства ShowCheckBox, равным true. Если этот флажок не отмечен пользователем, работа соответствующего элемента управления DateTimePicker блокируется. Состояние флажка можно установить или определить при помощи свойства Checked.

Свойства MinDate и MaxDate задают, соответственно, нижнюю и верхнюю границу изменения дат. Используя эти свойства, программист может ограничить диапазон изменения дат в окне элемента управления DateTimePicker.

Что же касается значения даты, установленной пользователем, то программа может извлечь его из свойства Value.

Доработайте обработчик события button1_Click приложения DateTimeApp следующим образом, добавив в него строки для извлечения и отображения даты и времени, введенных с помощью элементов управления DateTimePicker:

private void button1_Click(object sender, System.EventArgs e)
{
string s = "Выбран диапазон дат: ";
DateTime dtStart = monthCalendar1.SelectionRange.Start;
DateTime dtEnd = monthCalendar1.SelectionRange.End;

s += "(" + dtStart.Day + "." + dtStart.Month + "." + dtStart.Year + " - " +
dtEnd.Day + "." + dtEnd.Month + "." + dtEnd.Year + ")";
DateTime dt1 = dateTimePicker1.Value;
DateTime dt2 = dateTimePicker2.Value;
DateTime dt3 = dateTimePicker3.Value;
DateTime dt4 = dateTimePicker4.Value;

s += "\n\nДата 1: " + dt1.Day + "." + dt1.Month + "." + dt1.Year;
s += "\nДата 2: " + dt2.Day + "." + dt2.Month + "." + dt2.Year;

s += "\n\nВремя 3: " + dt3.Hour + ":" + dt3.Minute + ":" + dt3.Second;
s += "\nВремя 4: " + dt4.Hour + ":" + dt4.Minute + ":" + dt4.Second;
MessageBox.Show(s);
}

Результат работы этого фрагмента нашего приложения показан на рис. 6-26.

Рис. 6-26. Отображение времени и даты