次の形式の文字列のリストがあります。
apple
apple/red
apple/green
apple/green/lime
banana
banana/yellow/dotted
各文字列はノードであり、/ の後のテキストはそのノードの子です。この形式のリストをツリーノードに変換するコードを作成しようとしましたが、これについて頭を悩ませているようには見えません。正確にそれを行うためのコードを提供していただけますか?
このようなことを試してください:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim nodeData As New List(Of String)(New String() { _
"apple", _
"apple/red", _
"apple/green", _
"apple/green/lime", _
"banana", _
"banana/yellow/dotted"})
Dim TN As TreeNode
For Each nodePath As String In nodeData
TN = Nothing
For Each node As String In nodePath.Split("/"c)
If IsNothing(TN) Then
If TreeView1.Nodes.ContainsKey(node) Then
TN = TreeView1.Nodes(node)
Else
TN = TreeView1.Nodes.Add(node, node)
End If
Else
If TN.Nodes.ContainsKey(node) Then
TN = TN.Nodes(node)
Else
TN = TN.Nodes.Add(node, node)
End If
End If
Next
Next
End Sub
どのプログラミング言語を使用していますか?
編集:
'assuming you have a treeview on your form,
appleNode = TreeView.appleNode.Nodes.Add("Apple")
bananaNode = TreeView.bananaNode.Nodes.Add("Banana")
appleNodeChild1(0) = appleNode.Nodes.Add("Red") ' creates Apple/Red
appleNodeChild1(1) = appleNode.Nodes.Add("Green") ' creates Apple/Green
appleNodeChild2(0) = appleNodeChild1(1).Nodes.Add("Lime") 'creates Apple/Green/Lime
bananaNodeChild1(0) = bananaNode.Nodes.Add("Yellow") ' creates Banana/Yellow
bananaNodeChild2(0) = bananaNodeChild1(0).Nodes.Add("Dotted") 'creates Banana/Yellow/Dotted