Вибір дати 

Умова наступної задачі заключається в тому, щоб при натискуванні на відповідному елементі керування, з’являвся календар з якого можна вибрати необхідну дату. Це може бути дата відправлення потяга, завершення навчального семестру або інші ситуації пов’язані з вибором потрібної дати.

Для вирішення цієї задачі запустимо систему програмування Visual Studio 2010 та обираємо Создать проект (New Project). У наступному вікні обираємо пункт Visual Basic, а потім в області шаблонів (у середній колонці) — шаблон (Templates) Windows Forms Application. В якості імені проекту введемо імя ВибірДати та натиснемо клавішу ОК.

В дизайнері форми з панелі елементів Toolbox  перетягнемо на форму командну кнопку Button, мітку Label, та елемент DataTimePicker. Цей елемент безпосередньо виконує функцію вибору дати. Якщо клікнути на стрілці елемента DataTimePicker, то відкриється календар для вибору дати (рис.1)

Також ми хочемо, щоб календар елемента DataTimePicker відкривався при натисненні кнопки Button. В результаті обрана дата повинна відображатись в текстовій мітці Label. Трішки змінимо вказівником миші розміри екранної форми та розташуємо елементи керування так, як показано на рис.1.

Подвійним кліком в межах форми викличемо перехід на вкладку програмного коду Form1.vb. При цьому середовище Visual Studio 2010 згенерує пустий обробник події Form_Load. Таким же чином, тобто подвійним кліком на командній кнопці Button отримаємо пустий обробник події «клік на кнопці». Нам ще потрібно буде обробник події ValueChanged. Щоб його отримати, перейдемо на вкладку конструктора форми Form1.vb[Конструктор] і в панелі властивостей, клікнувши по значку блискавки (Events), для елементу DataTimePicker1 подвійним кліком миші оберемо подію ValueChanged. Це призведе до появи пустого обробника події на вкладці Form1.vb

На вкладці програмного коду додамо потрібні команди:

 Public Class Form1

    'Приклад реалізації вибору дати елементом DataTimePicker

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _

                           Handles MyBase.Load

        'Задємо початкові властивості елементам керування формою

        Me.Text = "Вибір дати"

        Button1.Text = "Вибрати дату"

        'Задаємо формат виводу дати елементу дати DateTimePicker1

        DateTimePicker1.Format = DateTimePickerFormat.Custom

        DateTimePicker1.CustomFormat = "dddd, dd MMMM, yyyy"

        ' ddd - день тижня скорочено, dddd - день тижня повна назва

        ' dd - число

        ' MM - номер місяця, MMM - коротка назва місяця, MMMM - повна назва місяця

        ' yy - рік 2 числа, yyyy - рік 4 числа

        'Виводимо обрану дату в текстову мітку. використовуючи метод String.Format

        Label1.Text = String.Format("Вибрана дата: {0}", DateTimePicker1.Text)

    End Sub

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

                               Handles Button1.Click

        'Обробка події відкриття списку

        'Передача фокусу на елемент DateTimePicker

        DateTimePicker1.Focus()

        'Імітація натиснення клавіші F4 (відкриття списку)

        SendKeys.Send("{F4}")

    End Sub

 

    Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object, _

                ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged

        'Обробляємо подію вибору дати та виводимо нову дату в елемент Label1

        Label1.Text = String.Format("Вибрана дата: {0}", DateTimePicker1.Text)

    End Sub

End Class

 З програмного коду можна побачити, що при завантаженні форми ми задаємо потрібний формат відображення дати:

  • спочатку задається вивід дня тижня (“ddd”);
  • потім – число та назва місяця (“dd MMM”);
  • і, нарешті – виведення року (“yyyy”).

при обробці події зміни дати  ValueChanged текстовій мітці Label1 присвоюється обране значення дати. При цьому використовується метод String.Format.

Використаний формат "Вибрана дата: {0}" означає  - взяти нулевий елемент, що виводиться, тобто властивість  Text об’єкта DataTimePicker1, і записати його замість фігурних дужок.

При обробці події «клік по кнопці» спочатку потрібно зробити активним елемент (передати фокус) керування DateTimePicker1. Тепер для розкриття календаря можна використати клавішу <F4>.

Примітка

Зазвичай функціональна клавіша <F4> забезпечує розкриття списку в додатках Windows. Наприклад, якщо в браузері Internet Explorer передати фокус кліком миші на адресну стрічку, то після натиснення клавіші <F4> відкриється список відвіданих веб-сторінок, і вам лише потрібно буде вибрати в ньому потрібний ресурс. В даному випадку ми імітуємо натиснення клавіші <F4> — методом Send, посилаючи активному додатку повідомлення про натиснення відповідної клавіші.

 

На рисунку наведено приклад роботи програми.