Вход/Регистрация
Программирование для карманных компьютеров
вернуться

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

Шрифт:

25. Обработчик щелчка на кнопке PictureBox2, который осуществляет переход к следующему дню, приведен в листинге 6.13. Листинг 6.13

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

System.EventArgs) Handles PictureBox2.Click

Data_Save(Label1.Text)

D = DateAdd(DateInterval.Day, 1, D)

Label1.Text = D.ToShortDateString

Data_Load(D.ToShortDateString)

End Sub

26. Обработчик щелчка на кнопке PictureBox3, который отвечает за добавление очередной записи в текущий день, показан в листинге 6.14. Листинг 6.14

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

System.EventArgs) Handles PictureBox3.Click

Dim lvIt As ListViewItem

\'Создаем диалоговую форму редактирования

Dim MyForm As New Form2

\'Устанавливаем флаг, показывающий, что был щелчок на кнопке 3

MyForm.Send = 3

\'Если ListView не пустой, копируем значения полей текущей записи в

\'переменные так, что время конца в текущей записи станет временем начала

\'в создаваемой записи

If ListView1.Items.Count > 0 Then

categorySt = ListView1.Items.Item_

(ListView1.Items.Count – 1). SubItems(0). Text

startOfSt = ListView1.Items.Item_

(ListView1.Items.Count – 1). SubItems(2). Text

endOfSt = startOfSt

noteSt = ""

Else

categorySt = ""

startOfSt = ""

endOfSt = ""

noteSt = ""

End If

\'Выводим на экран форму редактирования записи

If MyForm.ShowDialog = DialogResult.OK Then

\'И если редактирование завершилось щелчком на кнопке OK, добавляем новую

\'запись в ListView

lvIt = New ListViewItem(categorySt)

ListView1.Items.Add(lvIt)

ListView1.Items.Item.(ListView1.Items.Count – 1). SubItems.Add(startOfSt)

ListView1.Items.Item.(ListView1.Items.Count – 1). SubItems.Add(endOfSt)

ListView1.Items.Item.(ListView1.Items.Count – 1). SubItems.Add(noteSt)

End If

End Sub

27. Обработчик щелчка на кнопке PictureBox4, который отвечает за редактирование текущей записи, показан в листинге 6.15. Листинг 6.15

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

System.EventArgs) Handles PictureBox4.Click

\'Если в ListView есть выделенная строка, тогда редактируем

If ListView1.SelectedIndices.Count > 0 Then

Dim MyForm As New Form2

\'Сообщаем форме редактирования, что был щелчок на кнопке 4

MyForm.Send = 4

\'Копируем значения полей записи в переменные

categorySt = ListView1.Items(ListView1.SelectedIndices_(0)). SubItems(0). Text

startOfSt = ListView1.Items(ListView1.SelectedIndices(0)). SubItems(1). Text

endOfSt = ListView1.Items(ListView1.SelectedIndices(0)). SubItems(2). Text

noteSt = ListView1.Items(ListView1.SelectedIndices(0)). SubItems(3). Text

\'Если редактирование завершилось щелчком на кнопке OK, копируем возвращенные

\'значения переменных в соответствующие поля ListView

If MyForm.ShowDialog = DialogResult.OK Then

ListView1.Items(ListView1.SelectedIndices(0)). SubItems(0). Text = categorySt

ListView1.Items(ListView1.SelectedIndices(0)). SubItems(1). Text = startOfSt

ListView1.Items(ListView1.SelectedIndices(0)). SubItems(2). Text = endOfSt

ListView1.Items(ListView1.SelectedIndices(0)). SubItems(3). Text = noteSt

End If

End If

End Sub

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.

  • Читать дальше
  • 1
  • ...
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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