Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Количество нод в TrreView Добавлено: 07.09.04 19:03  

Автор вопроса:  danser | ICQ: 299287824 
Такой например код:
...
dim T as new TrreView()
T.Nodes.Add("123")

Как мне узнать количество елементов(нод), допустим, в нулевой ветке (в примере их 0 так как я только создал нулевую ветку).
Надо свойство типа T.Nodes.Count :(((

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 07.09.04 19:25
Рекурсивный перебор - рулит ;)

Ответить

Номер ответа: 2
Автор ответа:
 danser



ICQ: 299287824 

Вопросов: 76
Ответов: 209
 Профиль | | #2 Добавлено: 07.09.04 20:02
Да при заполнении я использую рекурсию:
f(Nodes1)
...
Nodes1.Add("abc";)
f(Nodes1.Item(???).Nodes)
...
Не знаю какой индекс ставить, надо индекс добавленой ноди "abc". Это должна быть последняя нода из семейства Nodes1, но я незнаю где взять количество елементов в Nodes1 :(...

Ответить

Номер ответа: 3
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #3
Добавлено: 08.09.04 10:46
TreeView.Nodes(0).Nodes.Count

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 08.09.04 13:14
:( это разве способ...

Count = SendMessage(hTreeView, TVM_GETCOUNT), cNull, ByVal 0&;)

Вот это способ :)

Ответить

Номер ответа: 5
Автор ответа:
 Barulya



Вопросов: 29
Ответов: 55
 Профиль | | #5 Добавлено: 08.09.04 15:18
Может быть я и ошибаюсь, но вот это должно помочь
T.Nodes.Item(0).GetNodeCount(true)

Ответить

Номер ответа: 6
Автор ответа:
 danser



ICQ: 299287824 

Вопросов: 76
Ответов: 209
 Профиль | | #6 Добавлено: 08.09.04 15:44
Павел, где ты взял свойство Count?

Ответить

Номер ответа: 7
Автор ответа:
 danser



ICQ: 299287824 

Вопросов: 76
Ответов: 209
 Профиль | | #7 Добавлено: 08.09.04 16:00
Вот вроде работает:
f(Nodes1)
...
Dim i as integer
i=(Nodes1.Add("abc";)).Index
f(Nodes1.Item(i).Nodes)
...

Ответить

Номер ответа: 8
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #8
Добавлено: 08.09.04 16:04
См в MSDN раздел по TreeNodeCollection:
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1033/cpref/html/frlrfsystemwindowsformstreenodecollectionclasscounttopic.htm

TreeNodeCollection.Count Property

Gets the total number of TreeNode objects in the collection.

Property Value
The total number of TreeNode objects in the collection.

Implements
ICollection.Count

Remarks
The Count property holds the number of TreeNode objects assigned to the collection. You can use the Count property value as the upper bounds of a loop to iterate through a collection.

Note Because the index value of a collection is a zero-based index, you must subtract one from the looping variable. If you do not account for this, you will exceed the upper bounds of the collection and throw an IndexOutOfRangeException exception.

Example
The following example displays the number of TreeNode objects in a TreeNodeCollection and copies the contents of the collection to an Object array and displays a list of the tree nodes in a Label control. This example assumes you have a TreeView with at least one TreeNode in its TreeNodeCollection and a Label control on a Form.

Private Sub CopyTreeNodes()
' Get the collection of TreeNodes.
Dim myNodeCollection As TreeNodeCollection = myTreeView.Nodes
Dim myCount As Integer = myNodeCollection.Count

myLabel.Text += "Number of nodes in the collection :" + myCount.ToString()

myLabel.Text += ControlChars.NewLine + ControlChars.NewLine + _
"Elements of the Array after Copying from the collection :" + ControlChars.NewLine

' Create an Object array.
Dim myArray(myCount -1) As Object

' Copy the collection into an array.
myNodeCollection.CopyTo(myArray, 0)
Dim i As Integer
For i = 0 To myArray.Length - 1
myLabel.Text += CType(myArray(i), TreeNode).Text + ControlChars.NewLine
Next i
End Sub

Requirements
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows .NET Server family, .NET Compact Framework - Windows CE .NET



Ответить

Номер ответа: 9
Автор ответа:
 danser



ICQ: 299287824 

Вопросов: 76
Ответов: 209
 Профиль | | #9 Добавлено: 08.09.04 20:01
Может я английский и не знаю хорошо...
Я попробовал ввести строки:

Dim Col As TreeNodeCollection = Me.TreeView1.Nodes
dim Count as Integer=col."Нету свойства Count!!!"

Ну нету свойства Count хоть убей!!!
Может я что-то не так понимаю или студия у меня не та... но разве это от студии зависит...

Ответить

Номер ответа: 10
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #10
Добавлено: 09.09.04 17:22
IntelliSense в VS .Net 2002 почему-то свойство Count в списке не
показывает, но оно есть и работает нормально. Вот такой код у меня
выдает "1":

Dim T As New TreeView()
T.Nodes.Add("123")
MessageBox.Show(T.Nodes.Count)


Ответить

Номер ответа: 11
Автор ответа:
 danser



ICQ: 299287824 

Вопросов: 76
Ответов: 209
 Профиль | | #11 Добавлено: 10.09.04 00:36
Да ты прав, свойство есть только не отображается, спасибо всем кто помог понять :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам