使用c#选择treeView控件中的所有子节点

本文关键字:子节点 控件 选择 treeView 使用 | 更新日期: 2023-09-27 18:02:14

如果选择了父节点,则尝试选择所有子节点。我使用的是Telerik WinControls的radTreeView。我试着使用radTreeView_SelectedNodeChanged(),得到了这个代码:

private void machinesTreeView_SelectedNodeChanged(object sender, RadTreeViewEventArgs e)
{
    for (int w = 0; w < machinesTreeView.SelectedNode.Nodes.Count; w++)
    {
        machinesTreeView.SelectedNode = machinesTreeView.SelectedNode.Nodes[w];
    }
}

我调试了它,因为它只是选择第一个。然后我看到它只选择第一个是合乎逻辑的。因为如果代码执行

machinesTreeView.SelectedNode = machinesTreeView.SelectedNode.Nodes[w];

它选择一个新的,所以SelectedNodeChanged事件被再次触发,然后for循环是不必要的,因为在子节点上没有任何子节点。

所以我的问题是,是否有另一种(也许更好的)方法来做到这一点?

感谢建议:)

使用c#选择treeView控件中的所有子节点

似乎您的处理程序中存在错误。如果想要选择所有子节点,可以这样做:

    private void machinesTreeView_SelectedNodeChanged(object sender, RadTreeViewEventArgs e)
    {
        for (int w = 0; w < machinesTreeView.SelectedNode.Nodes.Count; w++)
        {
            machinesTreeView.SelectedNode.Nodes[w].Selected = true;
        }
    }

不要忘记启用多选功能:

machinesTreeView.MultiSelect = true;