> 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
>'----------------------------------------------------------------------
>'Заносит записи о возникновении событий в массив, который мы
>'можем просмотреть
>'Примечание: Не делается никаких попыток ограничить размерность массива
>' регистрационных записей, поэтому, чем дольше выполняется приложение,
>' тем больше становится размер массива
>'----------------------------------------------------------------------