C#.Net中对于树控件treeView,如何获取当前节点的完整路径?

okletgo 2008-04-11 02:43:36
C#.Net中对于树控件treeView,如何获取当前节点的完整路径?
...全文
2090 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gshuhugs 2008-04-11
  • 打赏
  • 举报
回复 1
不知道您的问题可不可以用代码实现,如果可以请继续向下看。
解决方案:
根据treeview中任何一个节点只有一个父节点,可以运用倒序的方法找到完整的路径。
1.您可以声明一个字符串,用来存放您要的路径。
2.在treeview的AfterSelect事件中编程,把当前节点的text值和该节点的Parent节点的text值保存到字符串中,
运用递归直到没有父节点为止。
我在winform界面中拖放了一个treeview和一个textbox(用来显示选中节点的路径):
这是全部代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form2 : Form
{
string str;
public Form2()
{
InitializeComponent();
}

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
str = "";
TreeNode node = new TreeNode();
node = treeView1.SelectedNode;
textBox1.Text = selectNodePath(treeView1, node);
}
/// <summary>
/// 返回选中节点的完整路径
/// </summary>
/// <param name="treview">当前树</param>
/// <param name="node1">当前的节点</param>
/// <returns>完整路径</returns>
private string selectNodePath(TreeView treview, TreeNode node1)
{
TreeNode tn = new TreeNode();
tn = node1.Parent;
if (tn == null)
{
str = str.Insert(0,node1.Text.ToString() + "/");

}
else
{
str = str.Insert(0,node1.Text.ToString() + "/");
selectNodePath(treview, tn);
}
return str;
}

private void Form2_Load(object sender, EventArgs e)
{
treeView1.ExpandAll();//展开所有节点
}
}
}
水平有限,只能帮这点,共同进步。
lz1201048 2008-04-11
  • 打赏
  • 举报
回复

这也可以解决的,如果value已经放了id的话
value的值可以改成id + "," + fullPath
既node.value = "0,0^root^child2^Left2"这样的效果
取出来用的时候用String.Split(',')分开成一个String[2]

还有,缺点就是'/'和','在表的ID字段中是非法字符

如果你觉得这样不行,其他办法我还没有想到,呵呵
okletgo 2008-04-11
  • 打赏
  • 举报
回复
treeview的value我是存放id的,我在后面有用到这个id,
如果我不用到这个id的话,我就直接把它的value和Text两个属性值都设为和text一样,
那我用string valuePath = treeNode.SelectedNode.ValuePath; 就可以了,
但现在不能这样,value必须存id,,,,
lz1201048 2008-04-11
  • 打赏
  • 举报
回复
不好意思,把"^"换成"/"
lz1201048 2008-04-11
  • 打赏
  • 举报
回复
数据表:
id parentID name
1 0 root
2 1 child1
3 1 child2
4 3 Leaf1
5 3 Leaf2
需要做如下修改:
id parentID name fullPath
1 0 root 0^root
2 1 child1 0^root^child1
3 1 child2 0^root^child2
4 3 Leaf1 0^root^child2^Left1
5 3 Leaf2 0^root^child2^Left2

生成treeview的时候把fullPath绑定到Node的.Value属性上
okletgo 2008-04-11
  • 打赏
  • 举报
回复
像上面的如果要获取它的value的全路径可以用
string valuePath = treeNode.SelectedNode.ValuePath;

但现在我要获取它的Text的全路径,怎么办呢?
okletgo 2008-04-11
  • 打赏
  • 举报
回复
value上我已经绑定有它的ID了,我现在要知道它的Text的全部路径

比如:
数据表:
id parentID name
1 0 root
2 1 child1
3 1 child2
4 3 Leaf1
5 3 Leaf2

生成树状如下,treeNode.value绑定的是它的id,treeNode.Text绑定的是它的name
root
|
child1
|
child2
|
Leaf1
|
Leaf2


我需要的是:root/child2/Leaf2,这样的路径,
ph0507 2008-04-11
  • 打赏
  • 举报
回复
顶一下!!!
小弟也急用这个!!!
高手进来呀
lz1201048 2008-04-11
  • 打赏
  • 举报
回复
asp.net中TreeView控件没有你说的这个功能!
只能手动在节点的value上绑定路径!
abc83915 2008-04-11
  • 打赏
  • 举报
回复
帮顶一下吧。。。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧