Чтение онлайн

на главную

Жанры

Программирование для карманных компьютеров

Волков Владимир

Шрифт:

28. Код обработчика щелчка на кнопке PictureBox5 (удаление текущей записи) приведен в листинге 6.16. Листинг 6.16

Private Sub PictureBox5_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles PictureBox5.Click

If ListView1.SelectedIndices.Count > 0 Then

ListView1.Items.Remove(ListView1.Items(ListView1.SelectedIndices(0)))

End If

End Sub

29. После того как были написаны обработчики для элементов управления основной формы, нужно сделать то же самое для формы редактирования данных. Сначала нужно объявить в этой форме переменную Send, как показано в листинге 6.17. Лиситнг 6.17

Public Class Form2

Public Send As Integer

30. Теперь можно написать основные обработчики событий компонентов. Обработчик события загрузки формы должен различать, щелчком на котором элементе была загружена форма, и

вести себя соответственно. Это поведение задается в коде, который приведен в листинге 6.18. Листинг 6.18

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

Handles MyBase.Load

Dim myCount As Integer

Dim myStrTime As String

ComboBox2.Items.Clear

ComboBox3.Items.Clear

\'Загружаем содержимое двух компонентов выпадающих списков, которые

\'должны отображать выбор временных интервалов от 00.00 до 23.55 c

\'дискретностью в 5 минут

For myCount = 0 To 287

Dim myTime1 As TimeSpan = TimeSpan.FromMinutes(myCount * 5)

myStrTime = myTime1.ToString

myStrTime = myStrTime.Substring(0, 5)

ComboBox2.Items.Add(myStrTime)

ComboBox3.Items.Add(myStrTime)

Next

\'Читаем список категорий в ComboBox1

Dim myxmlDoc As New Xml.XmlDocument

Dim dirStr As String

dirStr = IO.Path.GetDirectoryName_

(Reflection.Assembly.GetExecutingAssembly.GetName.CodeBase.ToString)

ComboBox1.Items.Clear

myxmlDoc.Load(dirStr + «\Category.xml»)

For myCount = 0 To myxmlDoc.ChildNodes.Item(1). ChildNodes.Count – 1

ComboBox1.Items.Add_ (myxmlDoc.ChildNodes.Item(1). ChildNodes.Item(myCount). Name)

Next

ComboBox1.SelectedIndex = 0

ComboBox2.SelectedIndex = 0

ComboBox3.SelectedIndex = 0

\'Устанавливаем в ComboBox1 категорию, которая задана в последней

\'строке ListView

For myCount = 0 To ComboBox1.Items.Count – 1

If ComboBox1.Items(myCount) = categorySt Then

ComboBox1.SelectedIndex = myCount

Exit For

End If

Next

\'Для второго и третьего ComboBox так же устанавливаем значения

For myCount = 0 To ComboBox2.Items.Count – 1

If ComboBox2.Items(myCount) = startOfSt Then

ComboBox2.SelectedIndex = myCount

Exit For

End If

Next

For myCount = 0 To ComboBox3.Items.Count – 1

If ComboBox3.Items(myCount) = endOfSt Then

ComboBox3.SelectedIndex = myCount

Exit For

End If

Next

TextBox1.Text = noteSt

End Sub

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 Sub

32. Код обработчика щелчка на кнопке 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 Sub

33. Осталось задать код еще двух обработчиков, предназначенных для автоматического отображения и скрытия программной панели ввода (виртуальной клавиатуры) при приобретении и потери фокуса текстовым полем 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

37. В процедурах PictureBox1_Click и PictureBox2_Click строку Data_Save(Label1.Text) нужно заменить строкой Data_Save(DateTimePicker1.Value.ToShortDateString).

38. В процедуре Form1_Closing нужно удалить строку Data_Save(Label1.Text) и вместо нее ввести строку Data_Save(DateTimePicker1.Value.ToShortDateString).

39. В процедуре Form1_Closing строку Data_Save(Label1.Text) нужно заменить вызовом обновленного варианта функции сохранения данных Data_Save(DateTimePicker1. Value.ToShortDateString).

40. Также нужно объявить в начале формы еще одну переменную при помощи конструкции Dim dtpClick As Boolean.

41. В код формы нужно добавить еще две процедуры, показанные в листинге 6.22.

Листинг 6.22

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

System.EventArgs) Handles DateTimePicker1.ValueChanged

If dtpClick = True Then

Data_Save(D.ToShortDateString)

D = DateTimePicker1.Value

Data_Load(D.ToShortDateString)

dtpClick = False

End If

End Sub

Private Sub DateTimePicker1_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles DateTimePicker1.Click

dtpClick = True

End Sub

42. Теперь проект можно снова запустить на выполнение. Результат работы при щелчке на компоненте DateTimePicker должен быть таким, как показано на рис. 6.16.

Рис. 6.16. Компонент DateTimePicker в работающем проекте.

43. Теперь можно поработать над удобством использования приложения. В область размещения невидимых компонентов нужно добавить компонент ContextMenu. Нужно щелкнуть на этом компоненте, а затем на форме добавить к его отображению пункты меню Добавить, Редактировать и Удалить, как это показано на рис. 6.17.

Рис. 6.17. Редактирование контекстного меню.

Поделиться:
Популярные книги

Неверный

Тоцка Тала
Любовные романы:
современные любовные романы
5.50
рейтинг книги
Неверный

Релокант. По следам Ушедшего

Ascold Flow
3. Релокант в другой мир
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Релокант. По следам Ушедшего

Пистоль и шпага

Дроздов Анатолий Федорович
2. Штуцер и тесак
Фантастика:
альтернативная история
8.28
рейтинг книги
Пистоль и шпага

Как я строил магическую империю 2

Зубов Константин
2. Как я строил магическую империю
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Как я строил магическую империю 2

Все не так, как кажется

Юнина Наталья
Любовные романы:
современные любовные романы
7.70
рейтинг книги
Все не так, как кажется

Безумный Макс. Ротмистр Империи

Ланцов Михаил Алексеевич
2. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
4.67
рейтинг книги
Безумный Макс. Ротмистр Империи

Менталист. Эмансипация

Еслер Андрей
1. Выиграть у времени
Фантастика:
альтернативная история
7.52
рейтинг книги
Менталист. Эмансипация

Сводный гад

Рам Янка
2. Самбисты
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Сводный гад

Лапочки-дочки из прошлого. Исцели мое сердце

Лесневская Вероника
2. Суровые отцы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Лапочки-дочки из прошлого. Исцели мое сердце

Сопряжение 9

Астахов Евгений Евгеньевич
9. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
технофэнтези
рпг
5.00
рейтинг книги
Сопряжение 9

Назад в СССР: 1984

Гаусс Максим
1. Спасти ЧАЭС
Фантастика:
попаданцы
альтернативная история
4.80
рейтинг книги
Назад в СССР: 1984

Изгой. Пенталогия

Михайлов Дем Алексеевич
Изгой
Фантастика:
фэнтези
9.01
рейтинг книги
Изгой. Пенталогия

Академия

Кондакова Анна
2. Клан Волка
Фантастика:
боевая фантастика
5.40
рейтинг книги
Академия

Шипучка для Сухого

Зайцева Мария
Любовные романы:
современные любовные романы
8.29
рейтинг книги
Шипучка для Сухого