Программирование мобильных устройств на платформе .NET Compact Framework (Салмре) - страница 559


> 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


>'----------------------------------------------------------------------

>'Заносит записи о возникновении событий в массив, который мы

>'можем просмотреть

>'Примечание: Не делается никаких попыток ограничить размерность массива

>'  регистрационных записей, поэтому, чем дольше выполняется приложение,

>'  тем больше становится размер массива

>'----------------------------------------------------------------------