Книга: Программирование мобильных устройств на платформе .NET Compact Framework
Листинг 11.1. Заполнение данными и очистка от них элементов управления TreeView с использованием альтернативных стратегий
Листинг 11.1. Заполнение данными и очистка от них элементов управления TreeView с использованием альтернативных стратегий
'----------------------------------------------------------------------------
'Примечание #1: В этом примере используется класс PerformanceSampling,
' определённый ранее в данной книге. Убедитесь в том, что
' вы включили этот класс в свой проект.
'Примечание #2: Этот код необходимо включить в класс Form, содержащий элемент
' управления TreeView и кнопки Button, к которым подключены
' приведенные ниже функции xxx_Click.
'----------------------------------------------------------------------------
'Количество элементов, которые необходимо поместить в элемент
'управления TreeView
Const NUMBER_ITEMS As Integer = 800
'-------------------------------------------------------------------------
'Код для кнопки "Fill: Baseline"
'Использование неоптимизированного подхода для заполнения данными элемента
'управления TreeView
'-------------------------------------------------------------------------
Private Sub UnOptimizedFill_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles UnOptimizedFill.Click
'Очистить массив для создания одинаковых условий тестирования
If (TreeView1.Nodes.Count > 0) Then
TreeView1.BeginUpdate()
TreeView1.Nodes.Clear()
TreeView1.EndUpdate()
TreeView1.Update()
End If
'Для повышения корректности тестирования предварительно выполнить
'операцию сборки мусора. В реальных кодах этого делать не следует!
System.GC.Collect()
'Запустить таймер
PerformanceSampling.StartSample(0, "TreeViewPopulate")
'Заполнить данными элемент управления TreeView
Dim i As Integer
For i = 1 To NUMBER_ITEMS
TreeView1.Nodes.Add("TreeItem" + CStr(i))
Next
'Остановить таймер и отобразить результат
PerformanceSampling.StopSample(0)
MsgBox(PerformanceSampling.GetSampleDurationText(0))
End Sub
'-------------------------------------------------------------------------
'Код для кнопки "Clear: Baseline"
'Использование неоптимизированного подхода для заполнения данными элемента
'управления TreeView
'-------------------------------------------------------------------------
Private Sub UnOptimizedClear_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles UnOptimizedClear.Click
'Для повышения корректности тестирования предварительно выполнить
'операцию сборки мусора
System.GC.Collect()
'Запустить таймер
PerformanceSampling.StartSample(1, "TreeViewClear")
TreeView1.Nodes.Clear()
PerformanceSampling.StopSample(1)
MsgBox(PerformanceSampling.GetSampleDurationText(1))
End Sub
'--------------------------------------------------
'Код для кнопки "Fill: BeginUpdate"
'Подход, в котором используется метод BeginUpdate()
'--------------------------------------------------
Private Sub UseBeginEndUpdateForFill_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles UseBeginEndUpdateForFill.Click
'Очистить массив для создания одинаковых условий тестирования
If (TreeView1.Nodes.Count > 0) Then
TreeView1.BeginUpdate()
TreeView1.Nodes.Clear()
TreeView1.EndUpdate()
TreeView1.Update()
End If
'Для повышения корректности тестирования предварительно выполнить
'операцию сборки мусора. В РЕАЛЬНЫХ КОДАХ ЭТОГО ДЕЛАТЬ НЕ СЛЕДУЕТ!
System.GC.Collect()
'Запустить таймер
PerformanceSampling.StartSample(2, _
"Populate - Use BeginUpdate")
'Заполнить данными элемент управления TreeView
TreeView1.BeginUpdate()
Dim i As Integer
For i = 1 To NUMBER_ITEMS
TreeView1.Nodes.Add("TreeItem" + i.ToString())
Next
TreeView1.EndUpdate()
'Остановить таймер и отобразить результат
PerformanceSampling.StopSample(2)
MsgBox(PerformanceSampling.GetSampleDurationText(2))
End Sub
'--------------------------------------------------
'Код для кнопки "Clear: BeginUpdate"
'Подход, в котором используется метод BeginUpdate()
'--------------------------------------------------
Private Sub UseBeginEndUpdateForClear_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles UseBeginEndUpdateForClear.Click
'Для повышения корректности тестирования предварительно выполнить
'операцию сборки мусора. В РЕАЛЬНЫХ КОДАХ ЭТОГО ДЕЛАТЬ НЕ СЛЕДУЕТ!
System.GC.Collect()
'Запустить таймер
PerformanceSampling.StartSample(3, "Clear - Use BeginUpdate")
TreeView1.BeginUpdate()
TreeView1.Nodes.Clear()
TreeView1.EndUpdate()
'Остановить таймер и отобразить результат
PerformanceSampling.StopSample(3)
MsgBox(PerformanceSampling.GetSampleDurationText(3))
End Sub
'-------------------------------------
'Код для кнопки "Fill: Use Array"
'Подход, в котором используется массив
'-------------------------------------
Private Sub FillArrayBeforeAttachingToTree_Click(ByVal _
sender As System.Object, ByVal e As System.EventArgs) _
Handles FillArrayBeforeAttachingToTree.Click
'Очистить массив для создания одинаковых условий тестирования
If (TreeView1.Nodes.Count > 0) Then
TreeView1.BeginUpdate()
TreeView1.Nodes.Clear()
TreeView1.EndUpdate()
TreeView1.Update()
End If
'Для повышения корректности тестирования предварительно выполнить
'операцию сборки мусора. В РЕАЛЬНЫХ КОДАХ ЭТОГО ДЕЛАТЬ НЕ СЛЕДУЕТ!
System.GC.Collect()
'Запустить таймер
PerformanceSampling.StartSample(4, "Populate - Use Array")
'Распределить память для нашего массива узлов дерева
Dim newTreeNodes() As System.Windows.Forms.TreeNode
ReDim newTreeNodes(NUMBER_ITEMS - 1)
'Заполнить массив
Dim i As Integer
For i = 0 To NUMBER_ITEMS - 1
newTreeNodes(i) = _
New System.Windows.Forms.TreeNode("TreeItem" + _
i.ToString())
Next
'Связать массив с элементом управления TreeView
TreeView1.BeginUpdate()
TreeView1.Nodes.AddRange(newTreeNodes)
TreeView1.EndUpdate()
'Остановить таймер и отобразить результат
PerformanceSampling.StopSample(4)
MsgBox(PerformanceSampling.GetSampleDurationText(4))
End Sub
- Листинг 11.1. Заполнение данными и очистка от них элементов управления TreeView с использованием альтернативных стратегий
- Листинг 11.2. Динамическое заполнение данными элемента управления TreeView
- Листинг 11.3. Запуск обработчика событий при изменении содержимого элемента TextBox программным путем
- Листинг 11.4. Использование модели состояний для обновления интерфейса и контроль запуска событий с целью более глубокого изучения процесса обработки событий и управления им
- Листинг 11.5. Вызов метода Update() элемента управления для отображения пояснительного текста, информирующего о ходе выполнения задачи
- Листинг 11.6. Создание изображения на внеэкранной растровой поверхности и передача его в элемент управления PictureBox
- Листинг 11.7. Создание объекта Graphics для формы
- Листинг 11.8. Подключение к функции Paint формы
- Листинг 11.9. Простой пользовательский элемент управления, который изменяет цвета и запускает событие, определяемое пользователем
- Листинг 11.10. Код, который должен быть помещен в форму для создания экземпляра пользовательского элемента управления
- Листинг 11.11. Три полезных способа кэширования графических ресурсов
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- Восстановление с использованием инструмента gbak
- Заполнение справочников и каталогов
- Основные "рычаги" управления производительностью
- Категорийный менеджмент. Курс управления ассортиментом в рознице
- Создание свободно позиционируемых элементов
- 1.3. Правила подключения к компьютеру внешних устройств
- 11 Основные возражения и ответы на них
- Безопасность внешних таблиц. Параметр EXTERNAL FILE DIRECTORY
- Вызов хранимых процедур InterBase с использованием стандартного синтаксиса ODBC
- Листинг 15.11. Код для загрузки файла с Web-сервера
- 1. Системы управления базами данных