C# 获取树视图中的所有可见节点
我只想在treeview上“仅在视图中”获取节点的密钥 这是一个例子 我使用下面的代码递归地获取所有节点。它只是按预期返回所有节点密钥。然而,我需要得到的钥匙,只有在树视图的看法C# 获取树视图中的所有可见节点,c#,.net,winforms,treeview,C#,.net,Winforms,Treeview,我只想在treeview上“仅在视图中”获取节点的密钥 这是一个例子 我使用下面的代码递归地获取所有节点。它只是按预期返回所有节点密钥。然而,我需要得到的钥匙,只有在树视图的看法 public void PrintNodesRecursive(UltraTreeNode oParentNode) { if (oParentNode.Nodes.Count == 0) { return; } foreach (UltraTreeNode oSubN
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]);
}
我不知道我应该遵循不同的路径,或者只是重新组织代码
过了好几个小时我才起床。需要您的帮助。您可以使用
节点
集合和节点
的属性找到第一个可见节点。然后创建一个递归方法,该方法使用NextVisibleNode
在TreeView
中查找下一个可见节点
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;
}
}
private void按钮1\u单击(对象发送者,事件参数e)
{
var visibleNodes=GetVisibleNodes(treeView1.ToList();
}
公共IEnumerable GetVisibleNodes(TreeView t)
{
var node=t.Nodes.Cast()。其中(x=>x.IsVisible)。FirstOrDefault();
while(节点!=null)
{
var-temp=节点;
node=node.NextVisibleNode;
屈服返回温度;
}
}
另一种选择是,您可以使用扩展方法展平树视图
,然后使用IsVisible
属性获取所有可见节点。您是否尝试过树节点的.IsExpanded
,.IsVisible
,.NextVisibleNode
,.previsiblenode
属性?(如果我正确理解这个问题)。@Jimi嘿,是的,我尝试了下一个可见节点,它工作得很好,但我没有进入for循环。如何以编程方式使用下一个可见节点获取所有节点?谢谢。你让我开心。我想在不久的将来像你一样,先生。