从 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)
否则,每个递归步骤都从顶部重新开始。
我有 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)
否则,每个递归步骤都从顶部重新开始。