我有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'值。它不算数,无限循环发生。
我该如何实现?
答案 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)
否则,每个递归步骤都从顶部开始。