Чтение онлайн

ЖАНРЫ

Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:

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.2. Динамическое заполнение данными элемента управления TreeView

'Фиктивный текст для размещения в заполнителях дочерних узлов

Const dummy_node As String = "_dummynode"

'Метка, которую мы будем использовать для обозначения узла

Const node_needToBePopulated As String = "_populateMe"

'Текст, который мы будем использовать для наших узлов высшего уровня

Const nodeText_Neighborhoods As String = "Neighborhoods"

Const nodeText_Prices As String = "Prices"

Const nodeText_HouseType As String = "HouseTypes"

'--------------------------------------------------------------------

'Обработчик события щелчка для кнопки

'Настраивает наш элемент управления TreeView для отображения процесса

'последовательного заполнения дерева

'--------------------------------------------------------------------

Private Sub Button1_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles Button1.Click

Dim tnNewNode As TreeNode

'Отключить обновление ПИ до тех пор, пока дерево не будет заполнено

TreeView1.BeginUpdate

'Избавиться от устаревших данных

TreeView1.Nodes.Clear

'--------------------

'Узел "Neighborhoods"

'--------------------

'Добавить узел "Neighborhoods" верхнего уровня.

tnNewNode = TreeView1.Nodes.Add("Neighborhoods")

'Установить для узла метку, указывающую на то, что узел

'будет заполняться динамически

tnNewNode.Tag = node_needToBePopulated

'Этот фиктивный дочерний узел существует лишь для того, чтобы

'узел имел, по крайней мере, один дочерний узел и поэтому

'был расширяемым.

tnNewNode.Nodes.Add(dummy_node)

'------------

'Узел "Price"

'------------

tnNewNode = TreeView1.Nodes.Add("Price")

'Установить для узла метку, указывающую на то, что узел

'будет заполняться динамически

tnNewNode.Tag = node_needToBePopulated

'Этот фиктивный дочерний узел существует лишь для того, чтобы

'узел имел, по крайней мере, один дочерний узел и поэтому

'был расширяемым

tnNewNode.Nodes.Add(dummy_node)

'----------------

'Узел "HouseType"

'----------------

tnNewNode = TreeView1.Nodes.Add("HouseType")

'Установить для узла метку, указывающую на то, что узел

'будет заполняться динамически

Поделиться с друзьями: