1

我需要一个多选的树视图组件。所以我下载了“ C# TreeView with multiple selection ”。现在我无法删除项目。以下代码运行良好,但没有删除任何内容:

private void removeToolStripMenuItem_Click(object sender, EventArgs e)
{
    for (int i = 0; i < treeView1.SelectedNodes.Count; i++)
    {
        try
        {
            if (treeView1.Nodes[i].IsSelected)
            {
                treeView1.Nodes[i].Remove();
                i--;
            }
        }
        catch { }
    } 

        treeView1.Update();
        treeView1.Refresh();
}

treeView1.SelectedNodes.Remove();

需要一个对象,但我不知道是哪个。

foreach (TreeNode tn in treeView1.SelectedNodes)
            tn.Remove();

由于集合已修改,因此引发异常。

有人可以帮我吗?

谢谢!

4

1 回答 1

3

尝试使用反向循环并在传递所选节点的节点集合上使用 Remove 方法

private void removeToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    for (int i = treeView1.SelectedNodes.Count - 1; i >= 0; i--)
    {
        TreeNode n = (TreeNode)treeView1.SelectedNodes[i];
        treeView1.Nodes.Remove(n);
    }
    treeView1.Update(); 
    treeView1.Refresh(); 
} 

此外,我认为您不必测试节点 IsSelected 是否因为您已经在使用 SelectedNodes 属性。(真的,我还没有检查这个自定义的树视图类是否是这种情况,但是名称表明包含的节点已经被选中)

于 2012-07-19T21:02:21.340 回答