【问题标题】:How to perform action on previous selected node in treeview (uncheck boxes)如何在树视图中对先前选定的节点执行操作(取消选中复选框)
【发布时间】:2014-09-25 06:09:25
【问题描述】:

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

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

Parent1 有子节点 A、B 和 C Parent2 有子节点 X、Y 和 Z 如果选中Parent 1并勾选A、B、C,然后用户选择Parent2,则需要清除Parent 1的A、B、C复选框。

我尝试使用 TreeNode tnBeforeSelect = tvFileMan.SelectedNode; 在 beforeSelect 事件中捕获 SelectedNode;但是当我尝试在 after select 事件中使用它时,它在该上下文中不存在。我有一个全局变量类,但不知道如何添加树节点变量。我想我可以用类似的东西取消检查 afterCheck 事件。

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

【问题讨论】:

  • 除了在foreach 循环中选中的复选框之外,您不能只清除节点复选框吗?
  • 亚历克斯,这就是我想要做的。问题是该代码会是什么样子?具体来说,我如何引用我想取消选中的节点和子节点,因为它们不再被选中?

标签: c# winforms tree treenode


【解决方案1】:

已解决。地点,地点,地点。诀窍是将 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;
                    }
                }
            }

【讨论】:

    猜你喜欢
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多