Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
tvControl = tnAddTo.TreeView
tvControl.BeginUpdate
'Очистить имеющийся фиктивный узел
tnAddTo.Nodes.Clear
'Объявить четыре узла, которые мы хотим сделать дочерними узлами
'того узла, который был передан.
Dim newNeighborhoodNodes As TreeNode
ReDim newNeighborhoodNodes(3)
newNeighborhoodNodes(0) = New TreeNode("Capitol Hill")
newNeighborhoodNodes(1) = New TreeNode("Chelsea")
newNeighborhoodNodes(2) = New TreeNode("Downtown")
newNeighborhoodNodes(3) = New TreeNode("South Bay")
'Добавить
дочерние узлы в элемент управления TreeView
tnAddTo.Nodes.AddRange(newNeighborhoodNodes)
tvControl.EndUpdate
End Sub
Листинг 11.3. Запуск обработчика событий при изменении содержимого элемента TextBox программным путем
Private m_eventTriggerCount As Integer
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Buttonl.Click
'Запускает событие TextChanged так же,
'как если бы текст был введен пользователем
TextBox1.Text = "Привет, мир"
End Sub
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles TextBox1.TextChanged
m_eventTriggerCount = m_eventTriggerCount + 1
'Обновить надпись для отображения количества событий
Label1.Text = "Событий: #" + CStr(m_eventTriggerCount)
'Внести каждое событие в список
ListBox1.Items.Add(m_eventTriggerCount.ToString + TextBox1.Text)
End Sub
Листинг 11.4. Использование модели состояний для обновления интерфейса и контроль запуска событий с целью более глубокого изучения процесса обработки событий и управления им
'-----------------------------------------
'Для активизации контроля запуска событий:
' #Const EVENTINSTRUMENTATION = 1
'Для отмены контроля запуска событий:
' #Const EVENTINSTRUMENTATION = 0
'-----------------------------------------
#Const EVENTINSTRUMENTATION = 1
'-----------------------------------------------------------------------
'Флаг, указывающий обработчикам событий, должен ли из них осуществляться
'выход без выполнения каких-либо действий
'-----------------------------------------------------------------------
Private m_userInterfaceUpdateOccuring As Boolean
'Счетчики
событий
Private m_radioButton1ChangeEventCount As Integer
Private m_textBox1ChangeEventCount As Integer
'-------------------------------------------------------------------------
'Код, который следует включать лишь в том случае, если приложение
'выполняется в режиме контроля запуска событий. Этот код характеризуется
'относительно высокими накладными расходами, и его следует компилировать и
'выполнять только тогда, когда выполняется диагностика.
'-------------------------------------------------------------------------
#If EVENTINSTRUMENTATION <> 0 Then
Private m_instrumentedEventLog As System.Collections.ArrayList
'----------------------------------------------------------------------
'Заносит записи о возникновении событий в массив, который мы
'можем просмотреть
'Примечание: Не делается никаких попыток ограничить размерность массива
' регистрационных записей, поэтому, чем дольше выполняется приложение,
' тем больше становится размер массива
'----------------------------------------------------------------------
Private Sub instrumented_logEventOccurrence(ByVal eventData _
As String)
'Создать журнал событий, если он еще не был создан
If (m_instrumentedEventLog Is Nothing) Then
m_instrumentedEventLog = _
New System.Collections.ArrayList
End If
'Зарегистрировать событие
m_instrumentedEventLog.Add(eventData)
End Sub
'----------------------------------------------------------
'Отобразить список возникших событий
'Примечание: Этот вариант реализации довольно груб.
' Целесообразнее отображать список событий
' в отдельном диалоговом окне, которое специально выводится
' для этого на экран.
'----------------------------------------------------------
Private Sub instrumentation_ShowEventLog Dim listItems As _
System.Windows.Forms.ListBox.ObjectCollection
listItems = listBoxEventLog.Items
'Очистить список элементов
listItems.Clear
'При отсутствии событий - выход
If (m instrumentedEventLog Is Nothing) Then
Поделиться с друзьями: