VB.NET - проверьте, установлен ли дочерний узел в TreeView

У меня была такая же проблема. Это произошло после ошибки запуска Windows, похоже, из-за этого некоторые файлы были повреждены. Я снова импортировал БД из сохраненного скрипта, и он отлично работает.

1
задан Richard Steele 13 July 2018 в 18:34
поделиться

1 ответ

Чтобы получить все проверенные узлы, вам нужно будет использовать рекурсивную функцию или сложный список. Я предпочитаю последнее:

Private Function GetCheckedNodes() As List(Of TreeNode)
  Dim result As New List(Of TreeNode)

  'Get the root nodes
  Dim nodes As New Stack(Of TreeNode)
  For Each tn As TreeNode In TreeView1.Nodes
    nodes.Push(tn)
  Next

  'Check each node and it's children
  While nodes.Count > 0
    Dim popNode As TreeNode = nodes.Pop
    If popNode.Checked Then
      result.Add(popNode)
    End If
    For Each tn As TreeNode In popNode.Nodes
      nodes.Push(tn)
    Next
  End While

  Return result
End Function

Затем использовать его:

For Each tn As TreeNode In GetCheckedNodes()
  MessageBox.Show(tn.Text)
Next
0
ответ дан LarsTech 17 August 2018 в 12:15
поделиться
  • 1
    Работает отлично. Действительно оценен. Большое спасибо. Теперь я внимательно изучаю код, чтобы узнать те части, с которыми я никогда не работал. – Richard Steele 13 July 2018 в 19:33
  • 2
    @RichardSteele Push помещает узел в список, Pop вынимает его. – LarsTech 13 July 2018 в 19:39
  • 3
    Да я вижу. Я тестировал код, чтобы узнать больше о новых характеристиках, которых я не знал, и я многому научился, изучая код. Большое спасибо. – Richard Steele 14 July 2018 в 16:07
Другие вопросы по тегам:

Похожие вопросы: