C#treeView,当用户单击子节点时,如何获取父节点
我有一个treeview,当文档加载到我的程序中时,它是通过编程生成的 我的treeview看起来像这样:C#treeView,当用户单击子节点时,如何获取父节点,c#,treeview,C#,Treeview,我有一个treeview,当文档加载到我的程序中时,它是通过编程生成的 我的treeview看起来像这样: + System - 65 + Subsystem - 32 Subsystem - 68 + Subsubsystem - 01 Subsubsystem - 02 + System - 70 + Subsystem - 22
+ System - 65
+ Subsystem - 32
Subsystem - 68
+ Subsubsystem - 01
Subsubsystem - 02
+ System - 70
+ Subsystem - 22
Subsystem - 30
+ Subsubsystem - 10
我需要能够单击“Subsubsystem”子节点,并让它使用属于相应系统和子系统的所有文档来弹出我的listView。例如,如果我点击上面树视图的子系统10,我需要它返回所有属于系统70、子系统30和子系统10的文档
我正在努力解决的一点是,当我点击子系统10时,知道如何获取子系统10的父节点
显然,当我单击子系统10时,我的程序需要获取父节点,以便返回属于相应系统和子系统的文档
有什么想法吗 使用treeview的afterselect事件。在TreeViewEventArgs中,有您当前的节点。该节点有一个属性父节点
private void treeView_AfterSelect(object sender, TreeViewEventArgs e)
{
e.Node.Parent
}
使用treeview的afterselect事件。在TreeViewEventArgs中,有您当前的节点。该节点有一个属性父节点
private void treeView_AfterSelect(object sender, TreeViewEventArgs e)
{
e.Node.Parent
}
您可以在
AfterSelect
事件上使用TreeNode.Parent属性
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if(e.Node.Parent!= null &&
e.Node.Parent.GetType() == typeof(TreeNode) )
{
// do something with e.Node.Parent
}
else
{
//"No parent node.";
}
}
或者,您可以从treeView1.SelectedNode.parent
获取父级。您可以在AfterSelect
事件上使用TreeNode.parent属性
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if(e.Node.Parent!= null &&
e.Node.Parent.GetType() == typeof(TreeNode) )
{
// do something with e.Node.Parent
}
else
{
//"No parent node.";
}
}
或者,您可以从treeView1.SelectedNode.parent中获取父级
private TreeNode[] GetParentNodes(TreeNode node_)
{
TreeNode[] nodes_ = new TreeNode[node_.Level +1];
nodes_[0] = node_;
for (int i = 1; i < nodes_.Length; i++)
{
nodes_[i] = nodes_[i -1].Parent;
}
return nodes_;
}
可以对其进行显著的清理,但总体思路是可行的。我使用一个简单的循环来完成此操作
private TreeNode[] GetParentNodes(TreeNode node_)
{
TreeNode[] nodes_ = new TreeNode[node_.Level +1];
nodes_[0] = node_;
for (int i = 1; i < nodes_.Length; i++)
{
nodes_[i] = nodes_[i -1].Parent;
}
return nodes_;
}
它可以被显著地清理,但总体思路是有效的。谢谢大家,我找到了.fullpath方法,它几乎满足了我的需要,但我需要重新连接节点键/名称,而不是文本。你知道怎么做吗?当你绑定数据时,你可以用你想要的设置TreeNode.Tag
属性。伙计们,我找到了.fullpath方法,它几乎可以满足我的需要,但我需要重新连接节点键/名称,而不是文本。你知道怎么做吗?当你绑定数据时,你可以用你想要的设置TreeNode.Tag
属性。我们可以假设这是提供了解决方案的,而不是。我们可以假设这是提供了解决方案的。