次のような WinForms Treeview があるとします。
Parent1
Child1
Sub-Child1
DeepestNode1
DeepestNode2
DeepestNode3
Sub-Child2
DeepestNode4
DeepestNode5
DeepestNode6
Child2
Sub-Child3
Sub-Child4
Sub-Child5
Sub-Child6
Child3
(no children)
次の行に沿って関数を作成したいと思います。
Function GetDeepestChildren(MyNode as Treenode) as List(Of Treenode)
結果が次のようになる場合:
GetDeepestChildren(Parent1) = {DeepestNode1, DeepestNode2, DeepestNode3, DeepestNode4, DeepestNode5, DeepestNode6}
GetDeepestChildren(Sub-Child1) = {DeepestNode1, DeepestNode2, DeepestNode3}
GetDeepestChildren(Child2) = {Sub-Child3, Sub-Child4, Sub-Child5, Sub-Child6}
GetDeepestChildren(Child3) = Empty list
... 言い換えると、常に指定されたノードからできる限り深いレベルに移動し、子を返します。子が異なる親に分割されている場合でも (の場合のようにParent1
)。
ノードが何レベル深くなるかを示す関数を作成しました。これは次のようになります。
Public Function GetDeepestChildNodeLevel(ByVal ParentNode As TreeNode) As Integer
Dim subLevel = ParentNode.Nodes.Cast(Of TreeNode).Select(Function(subNode) GetDeepestChildNodeLevel(subNode))
Return If(subLevel.Count = 0, 0, subLevel.Max() + 1)
End Function
だから私はどのレベルから子供を取得するかを知っています、私が探しているのはこれを行うことができる関数です - 次の行に沿った何か:
Function GetDeepestChildren(MyNode as Treenode) as List(Of Treenode)
Return All child nodes where level = GetDeepestChildNodeLevel(MyNode)
End function
これが理にかなっていることを願っています - ありがとう!