如何在树视图和复选框之间来回移动项目?



我一直在尝试找到一种方法将多个选中的项目从树视图移动到选中列表框。我有一个设置了虚拟数据,每个下面都有一个按钮,可以从一个容器移动到下一个容器。我从从 TreeView 移动到 CheckedListBox 的按钮开始,但我遇到了问题。我得到的对象引用未设置为我的节点变量的对象错误实例。这就是我正在尝试的:

法典

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
For Each node As TreeNode In TreeView1.Nodes
If (node.Checked) Then
Dim name As String = node.Text.ToString
node.Remove()
CheckedListBox1.Items.Add(name)
End If
Next
End Sub

我不一定需要使用按钮来移动它们,我只需要能够一次移动多个项目。任何帮助将不胜感激,提前感谢。

不能在 For-Each 循环中修改集合。 尝试以相反的顺序循环以避免弄乱 TreeNode 的索引顺序:

Dim movingNodes As New List(Of String)
For i As Integer = TreeView1.Nodes.Count - 1 To 0 Step -1
Dim node As TreeNode = TreeView1.Nodes(i)
If node.Checked Then
movingNodes.Add(node.Text)
node.Remove()
End If
Next
movingNodes.Reverse()
CheckedListBox1.Items.AddRange(movingNodes.ToArray)

将项从"选中列表框"移回树视图:

Dim movingNodes As New List(Of String)
For i As Integer = CheckedListBox1.Items.Count - 1 To 0 Step -1
If CheckedListBox1.GetItemChecked(i) Then
movingNodes.Add(CheckedListBox1.Items(i))
CheckedListBox1.Items.RemoveAt(i)
End If
Next
movingNodes.Reverse()
For Each s As String In movingNodes
TreeView1.Nodes.Add(s)
Next

最新更新