Елемент керування MonthCalendar

Елемент управління MonthCalendar (рис. 1) являє собою календар, за допомогою якого можна вибирати дату. У його верхній частині розташовані кнопки зі стрілками, що дозволяють переміщатися по місяцях. За замовчуванням в нижній частині календаря відображається поточна дата.

Рис.1. Елемент управління MonthCalendar

Зовнішній вигляд елемента керування

Для управління зовнішнім виглядом календаря застосовуються такі властивості:

  • ShowToday - значення за замовчуванням True дозволяє відображати в нижній частині календаря поточну дату;
  • ShowTodayCircle - значення за замовчуванням True задає виділення поточної дати;
  • ShowWeekNumbers - при встановленні значення True з лівого боку календаря відображається стовпець з номерами тижнів. За умовчанням встановлено значення False;
  • ScrollChange - визначає крок, з яким буде здійснюватися прокрутка календаря при натисканні кнопок переміщення по місяцях. За умовчанням встановлено послідовне переміщення по всіх місяцях.

Рис.2. Зовнішній вигляд елемента управління MonthCalendar

Перераховані в таблиці 1 властивості дозволяють змінити використовувані за замовчуванням кольори розділів календаря.

Таблиця 1. Властивості, що дозволяють змінити колір розділів календаря

 Властивість Опис 
 ForeColor  Задає колір днів місяця і лінії, розташованої під днями тижня
 BackColor  Задає колір фону області, на якій розташовані дні місяця
 TitleBackColor  Задає колір області заголовка календаря, в якій розташоване назва місяця, а також колір днів тижня
 TitleForeColor  Задає колір назви місяця і року
 TrailingForeColor  Задає колір днів, не поточного місяця, якщо вони відображаються в календарі

У формі можна відобразити одночасно кілька місяців, задавши число рядків і стовпців в календарі за допомогою властивості CalendarDimensions. При цьому відобразити можна не більше 12 місяців. На рис. 3 показаний календар з шістьма місяцями, розташованими в два ряди і три колонки.

Рис.3. Відображення в формі декількох місяців

Для визначення дня тижня, що відображається першим у календарі, служить властивість FirstDayOfWeek. Наприклад, щоб першим відображалася неділя, треба задати для цієї властивості значення Sunday.

За умовчанням як поточна дата вказується системна дата. Щоб змінити це значення, потрібно скористатися властивістю TodayDate.

Виділення дат

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

  • AnnuallyBoldedDates - список повторюваних щорічно дат (наприклад, днів народжень);
  • BoldedDates - список окремих дат;
  • MonthlyBoldedDates - список повторюваних щомісячно дат.

Додати в список нових значень і видалити з нього непотрібні можна за допомогою кнопок Add (Додати) або Remove (Видалити) діалогового вікна DateTime Collection Editor (Редактор списку дат), що відкривається натисканням кнопки з трьома крапками праворуч від відповідних властивостей, або за допомогою методів, зазначених в таблиці 2.

Таблиця 2. Методи додавання або видалення елементів в список дат, що виділяються напівжирним шрифтом

 Властивість Метод додавання   Метод видалення
 AnnuallyBoldedDates  AddAnnuallyBoldedDate  RemoveAnnuallyBoldedDate
 BoldedDates  AddBoldedDate  RemoveBoldedDate
 MonthlyBoldedDates  AddMonthlyBoldedDate  RemoveMonthlyBoldedDate

Як параметри даних методів використовується об'єкт DateTime, що задає  дату, яка виділятиметься. Наприклад, за допомогою наступного коду можна виділити будь-чий день народження в календарі:

        Dim birthday As Date = New DateTime(2005, 11, 10)

        Me.MonthCalendar1.AddAnnuallyBoldedDate(birthday)

Робота з календарем

За допомогою властивостей MinDate і MaxDate вказується діапазон значень, що задаються елементом управління MonthCalendar. За замовчуванням ці властивості приймають мінімально і максимально можливі значення 01.01.1753 і 31.12.9998 відповідно.

Для задання максимального числа послідовно обирають значень призначена властивість MaxSelectionCount. За замовчуванням можна вибирати до семи днів, які йдуть підряд . Для визначення першої або останньої дати з діапазону обраних дат використовуються властивості SelectionStart і SelectionEnd. Ці властивості повертають об'єкт типу DateTime. За допомогою наведених нижче властивостей цього об'єкта можна визначити число, місяць, рік обраної з календаря дати, а також день тижня і день року:

  • Day - день місяця;
  • DayOfWeek - день тижня;
  • DayOfYear - день року;
  • Month - номер місяця;
  • Year - рік.

Події DateChanged і DateSelected виникають при зміні обраної в елементі управління дати і при виділенні дати відповідно. Як аргумент обидві події отримують об'єкт DateRangeEventArgs, властивості End і Start якого можна в даній події використовувати замість властивостей SelectionStart і SelectionEnd елемента управління MonthCalendar.

На рис. 4 показана форма, яка містить елемент керування MonthCalendar, що дозволяє вибрати одну дату, і поля, які відображатимуть обрану з календаря дату, номер місяця і рік. Для відображення обраної дати в текстових полях необхідно додати процедуру обробки події DateSelected з наступним кодом:

    Private Sub MonthCalendar1_DateSelected(ByVal sender As Object, _

                                        ByVal e As System.Windows.Forms.DateRangeEventArgs) _

                                        Handles MonthCalendar1.DateSelected

        Me.txtDate.Text = e.Start.ToLongDateString

        Me.txtDay.Text = e.Start.Day.ToString

        Me.txtMonth.Text = e.Start.Month.ToString

        Me.txtYear.Text = e.Start.Year.ToString

 

    End Sub

Рис.4. Поля форми відображають обрану з календаря дату