从Infragistics UltraTree获取所有可见节点

时间:2017-12-16 13:15:35

标签: c# winforms infragistics ultratree

我有1个根节点和该根节点的许多子节点。

我希望获得所有可见节点的密钥。

如下的递归代码块;

public void PrintNodesRecursive(UltraTreeNode oParentNode)
{  
    foreach (UltraTreeNode oSubNode in ultraTree1.Nodes[0].Nodes)
    {
        MessageBox.Show(oSubNode.Key.ToString());
        PrintNodesRecursive(oSubNode);
    }             
}

private void ultraButton3_Click(object sender, EventArgs e)
{
    PrintNodesRecursive(ultraTree1.Nodes[0]);
}

但是,消息框始终显示我' 1'值。它不算数,无限循环发生。

我该如何实现?

2 个答案:

答案 0 :(得分:1)

试试这个;

    public void PrintNodesRecursive(UltraTreeNode oParentNode)
    {
        if (oParentNode.Nodes.Length == 0)
        {
            return;
        }
        foreach (UltraTreeNode oSubNode in oParentNode.Nodes)
        {
            if(oSubNode.Visible)
            {
                MessageBox.Show(oSubNode.Key.ToString());
            }
            PrintNodesRecursive(oSubNode);
        }
    }

另外,将visible条件放入循环中。

答案 1 :(得分:1)

你做了一个简单的编程错误。这一行:

foreach (UltraTreeNode oSubNode in ultraTree1.Nodes[0].Nodes)

应该是

foreach (UltraTreeNode oSubNode in oParentNode.Nodes)

否则,每个递归步骤都从顶部开始。