powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Считаем чекнутые НОДЫ TreeView
10 сообщений из 10, страница 1 из 1
Считаем чекнутые НОДЫ TreeView
    #38258925
Gagarin_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья, с помощью ниже приведенной функции пытаюсь перебором пройтись по всем нодам TreeView и посчитать чекнутые ноды.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    Public Function CountCheckedNodes(TrV As TreeView) As Integer
        Dim myNodeCollection As TreeNodeCollection = TrV.Nodes
        Dim myCount As Integer = myNodeCollection.Count ' Определяем количество элементов
        Dim myArray(myCount - 1) As Object ' Создаём массив
        Console.WriteLine(myCount) ' Инфа странноватая
        Dim i As Integer
        myNodeCollection.CopyTo(myArray, 0) ' Всю коллекцию в массив
        For i = 0 To myArray.Length - 1  ' Бежим по массиву
            If CType(myArray(i), TreeNode).Checked Then ' Если нода чекнутая 
                CountCheckedNodes = CountCheckedNodes + 1 ' Посчитаем её
               
            End If
        Next i

    End Function



Не получается. Дерево полное, а строка
Код: vbnet
1.
Console.WriteLine(myCount)


Пишет что количество элементов 1.

Помогите решить проблему.
...
Рейтинг: 0 / 0
Считаем чекнутые НОДЫ TreeView
    #38259031
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Считаем чекнутые НОДЫ TreeView
    #38259516
Gagarin_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я хочу это решить простым перебором. Не получается. :(
...
Рейтинг: 0 / 0
Считаем чекнутые НОДЫ TreeView
    #38259776
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gagarin_74Я хочу это решить простым перебором. Не получается. :(

... так а фор-ич - это и есть простой перебор, только копать нужно в дочерние ноды

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
For Each node In  treeNode.Nodes 
      node.Checked = nodeChecked
      If node.Nodes.Count > 0 Then
         ' If the current node has child nodes, call the CheckAllChildsNodes method recursively.
         Me.CheckAllChildNodes(node, nodeChecked)
      End If
Next node
...
Рейтинг: 0 / 0
Считаем чекнутые НОДЫ TreeView
    #38262221
Gagarin_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Профи, подскажите решение. Сам ни как не справлюсь.
Нет у меня понимания как последовательно перебрать все ноды одного TreeView.
...
Рейтинг: 0 / 0
Считаем чекнутые НОДЫ TreeView
    #38326364
Gagarin_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья!

Не бросайте новичка в беде. Подскажите как посчитать все отмеченные ноды.
...
Рейтинг: 0 / 0
Считаем чекнутые НОДЫ TreeView
    #38326417
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Считаем чекнутые НОДЫ TreeView
    #38327596
Gagarin_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А без рекурсии как нибудь можно?

Хочу вот так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Dim s As Integer
For Each node As TreeNode In TrV.Nodes ' TreeNode.Nodes
            If node.Nodes.Count > 0 Then
  
                If node.Checked Then
                    s = s + 1
                Else
                
                End If
            Else
                

            End If
Next node

Console.WriteLine (s)



Но почему то всё это не катит.
...
Рейтинг: 0 / 0
Считаем чекнутые НОДЫ TreeView
    #38327884
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gagarin_74А без рекурсии как нибудь можно?Можно, но сложно, и писать тебе это никто не будет.
...
Рейтинг: 0 / 0
Считаем чекнутые НОДЫ TreeView
    #38327939
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gagarin_74,

... если уж извращаться, принципиально не используя рекурсию, то повесьте на TreeView событие AfterCheck, и считайте чеки прямо в переменную, так сказать, онлайн ... Можно вообще Stack() использовать и делать ему Push() или Pop() ... Да мало ли моделей велосипедов, если не любишь рекурсию ... :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Считаем чекнутые НОДЫ TreeView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]