从 Infragistics UltraTree 获取所有可见节点

Getting all visible Nodes from 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”值。它不算数并且会发生无限循环。

我怎样才能实现它?

这样试试;

    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 条件放入循环中。

您犯了一个简单的编程错误。这一行:

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

应该是

foreach (UltraTreeNode oSubNode in oParentNode.Nodes)

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