如何在树视图中对先前选定的节点执行操作(取消选中框)

时间:2014-09-25 06:09:26

标签: c# winforms tree treenode

VS C#Winform树视图: 我是初学者,非常感谢你的帮助。

我想取消选中之前所选节点的框。 该应用程序仅允许用户选择具有子项的节点。然后他们可以检查子节点。如果他们然后选择另一个父节点,则需要清除前面的复选框。

Parent1有子节点A,B和& C Parent2具有子节点X,Y和& ž 如果选择父1,则A,B和&检查C,然后用户选择Parent2,A,B和A的复选框。父母1的C需要被清除。

我尝试使用TreeNode tnBeforeSelect = tvFileMan.SelectedNode捕获beforeSelect事件中的SelectedNode;但是当我尝试在after select事件中使用它时,它并不存在于该上下文中。我有一个全局变量类但无法弄清楚如何添加treenode变量。我想我可以在afterCheck事件中使用类似的东西取消选中。

foreach (TreeNode tn in tnBeforeSelect)  
{                            
      tnBeforeSelect.Nodes.Checked = false;
}

1 个答案:

答案 0 :(得分:0)

解决。位置,位置,位置。诀窍是将foreach循环放在BeforeCheck事件处理程序中,因为SelectedNode还没有改变。

            if (e.Node.Nodes.Count >= 1)
            {
                if (tvFileMan.SelectedNode != null)
                {
                    tvFileMan.SelectedNode.Checked = false;
                    foreach (TreeNode tn in tvFileMan.SelectedNode.Nodes)
                    {
                        if (tn.Nodes.Count.Equals(0))
                            tn.Checked = false;
                    }
                }
            }