我想在树视图上“仅在视图中”获取节点的键。
以下是示例;
我使用下面的代码递归获取所有节点。它只是按预期返回所有节点键。但是我需要只在树视图中获取密钥;
public void PrintNodesRecursive(UltraTreeNode oParentNode)
{
if (oParentNode.Nodes.Count == 0)
{
return;
}
foreach (UltraTreeNode oSubNode in oParentNode.Nodes)
{
MessageBox.Show(oSubNode.Key.ToString());
PrintNodesRecursive(oSubNode);
}
}
private void ultraButton3_Click(object sender, EventArgs e)
{
PrintNodesRecursive(ultraTree1.Nodes[0]);
}
我不知道我应该遵循不同的路径或只是重新组织代码。
我在几个小时后才堆积。需要你的帮助。
答案 0 :(得分:1)
您可以使用Nodes
的{{1}}集合和IsVisible
属性找到第一个可见节点。然后创建一个递归方法,使用Node
查找NextVisibleNode
中的下一个可见节点。
TreeView
另外,您可以依靠Descendants
扩展方法展开private void button1_Click(object sender, EventArgs e)
{
var visibleNodes = GetVisibleNodes(treeView1).ToList();
}
public IEnumerable<TreeNode> GetVisibleNodes(TreeView t)
{
var node = t.Nodes.Cast<TreeNode>().Where(x => x.IsVisible).FirstOrDefault();
while (node != null)
{
var temp = node;
node = node.NextVisibleNode;
yield return temp;
}
}
然后使用TreeView
属性,获取所有可见节点。