DateTimePicker и MonthCalendar

Последнее обновление: 31.10.2015

Для работы с датами в Windows Forms имеются элементы DateTimePicker и MonthCalendar.

DateTimePicker

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

Элемент DateTimePicker в Windows Forms

Наиболее важные свойства 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, поэтому с ним можно работать как и с любой другой датой. В данном случае выбранная дата преобразуется в строку времени.

Время в DateTimePicker

В вышеприведенном случае значение dateTimePicker1.Value.ToLongTimeString() аналогично тому тексту, который отображается в элементе. И мы могли бы написать так:

label1.Text = String.Format("Вы выбрали: {0}", dateTimePicker1.Text);

MonthCalendar

С помощью MonthCalendar также можно выбрать дату, только в данном случае этот элемент представляет сам календарь, который не надо раскрывать:

MonthCalendar в Windows Forms

Рассмотрим некоторые основные свойства элемента.

Свойства выделения дат:

  • 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));
Выделение дат в MonthCalendar

Для снятия выделения можно использовать аналоги этих методов:

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());
    }
}
Выбор даты в MonthCalendar
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850