31. Обработчик щелчка на кнопке OK формы редактирования показан в листинге 6.19. Листинг 6.19
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
\'Возвращаем в переменные установленные в элементах управления значения
categorySt = Me.ComboBox1.Text
startOfSt = Me.ComboBox2.Text
endOfSt = Me.ComboBox3.Text
noteSt = Me.TextBox1.Text
\'Возвращаем результат работы диалогового окна
DialogResult = DialogResult.OK
\'Закрываем форму
Me.Close()
End Sub32. Код обработчика щелчка на кнопке Cancel формы редактирования приведен в листинге 6.20. Листинг 6.20
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button2.Click
DialogResult = DialogResult.Cancel
Me.Close()
End Sub33. Осталось задать код еще двух обработчиков, предназначенных для автоматического отображения и скрытия программной панели ввода (виртуальной клавиатуры) при приобретении и потери фокуса текстовым полем TextBox. Код этих обработчиков приведен в листинге 6.21. Листинг 6.21
Private Sub TextBox1_GotFocus(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles TextBox1.GotFocus
InputPanel1.Enabled = True
End Sub
Private Sub TextBox1_LostFocus(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles TextBox1.LostFocus
InputPanel1.Enabled = False
End SubМы, наконец, создали несовершенный, но вполне работающий вариант программы. Проект можно скомпилировать и запустить на выполнение. После запуска приложения можно убедиться, что файлы создаются и читаются, записи добавляются, переход от одной даты к другой осуществляется корректно, а после выключения программы все изменения вносятся в файл 2005.xml.
Использование нестандартных компонентов
Безусловно, если вы попытались уже воспользоваться программой, вы заметили один большой недостаток. Приложение не позволяет перейти к произвольной дате, заставляя пользователя последовательно переходить от одного дня к другому.
Этот недостаток был бы легко устраним, если бы в. NET CF был элемент управления, который в стандартном VB.NET называется DateTime Picker. Поскольку данное неудобство, видимо, было замечено не только нами, инициативные разработчики создали такой элемент управления для. NET CF. Его можно свободно загрузить с сайта Microsoft.
Для этого необходимо войти на сайт www.microsoft.com и набрать в строке поиска строку DateTimePickerDesignTimeSampleSetup.exe. Поиск выдаст ссылку на статью Дж. Вилсона Adding Designer Support to the.NET Compact Framework DateTimePicker Control, внутри которой есть ссылка на необходимый файл. Но можно воспользоваться и прямой ссылкой download.microsoft.com/download/c/0/a/c0a7cea4-e9c1-4e80-9e5a-afed9a664876/DateTimePickerDesignTimeSampleSetup.exe.
Загрузив этот файл, его необходимо запустить. Программа установки выполнит все необходимые операции. Необходимые файлы будут размещены в папке С: \ Program Files\.NET Compact Framework Samples\DateTimePicker DesignTime Sample.
Для того чтобы воспользоваться компонентом, необходимо проделать нехитрую последовательность действий.
? В папке C: \Program Files\.NET Compact Framework Samples\DateTimePicker DesignTime Sample\code\CS найти файл DateTimePickerControl.sIn и открыть его двойным щелчком мыши.
? В открывшемся экземпляре Visual Studio выполнить команду Deploy Solution.
? Закрыть Visual Studio.
? Перейти в папку C: \Program Files\.NET Compact Framework Samples\DateTimePicker DesignTime Sample\code\CS\DateTimePickerControl.Deployment\Debug, найти в этой папке файл Setup.exe, запустить его и провести установку. После этого можно пользоваться компонентом DateTime Picker.
Теперь нужно модифицировать наш проект при помощи этого компонента.
Упражнение 6.2 (продолжение)
34. В форме Forml.vb нужно удалить компонент Labell и заменить его компонентом DateTimePicker, который можно найти после установки на палитре ToolBox.
Рис. 6.15. Компонент DateTimePicker в палитре и на форме.
35. В процедуре Form1_Load удалить строку
Label1.Text = System.DateTime.Today.ToShortDateString
36. Вместо нее добавить следующую строку
DateTimePicker1.Value = System.DateTime.Today