简体   繁体   English

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

[英]Select all child nodes in treeView control using C#

I try to select all child nodes if the parent node is selected. 如果选择了父节点,则尝试选择所有子节点。 I'm using a radTreeView from Telerik WinControls. 我正在使用Telerik WinControls的radTreeView。 I tried to use the radTreeView_SelectedNodeChanged() and got this code: 我试图使用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];
    }
}

I debugged it because its just selecting the first one. 我调试了它,因为它只是选择了第一个。 And then I'd seen that it's logical that it just selects the first one. 然后我看到只选择第一个是合乎逻辑的。 Because if the code executes 因为如果代码执行

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

it selects a new one so the SelectedNodeChanged event is fired again and then the for loop is unnecessary because there aren't any child nodes on a child node. 它选择了一个新节点,因此再次触发SelectedNodeChanged事件,然后不需要for循环,因为在子节点上没有任何子节点。

So my question is if there is another (maybe better) way to do that? 所以我的问题是,是否还有另一种(也许更好)的方法?

Suggestions appreciated :) 赞赏的建议:)

Seems that you have a bug in your handler. 似乎您的处理程序中有错误。 If you want to select all subnodes try this: 如果要选择所有子节点,请尝试以下操作:

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

Do not forget to enable multiselect feature: 不要忘记启用多选功能:

machinesTreeView.MultiSelect = true;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM