导航
  • 主页
  • WinForm
  • WPF
  • 问答

求助:点击treeView某节点,在listview中显示其所有子节点

marsboy1114 2008-10-07 01:42:20
在C#中要实现点击treeView中的某一节点,在listview中显示该节点下所有的子节点,该怎么做,需要定义事件吗,如果需要具体怎么做
...全文
236 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Doublehappywolf 2008-10-07
那就在就在treeView1_AfterSelect里先进行一下判定该节点是否需要节点就行了
在树节点展开时,建议给每个节点的tag或是name赋值,便于节点的判断
例如
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if(this.treeview1.nodes.tag=="ss") ////ss为判断条件
ReadChildNodeList(e.Node, this.listView1);
}

用name来判断也一样
回复
marsboy1114 2008-10-07
但是我要求的不是点击Treeview或者任何一个节点,而是要点击treeview上一个特定的节点才响应,而点其他节点或者treeview其他任何一个位置都不响应。比如说第一个根节点treeView1.Nodes[0],而不是其他任何节点或者treeview本身
回复
xuehu512 2008-10-07
楼主结帖吧。1楼说的确实能实现的。。
回复
yilanwuyu123 2008-10-07
mark
回复
[Quote=引用 1 楼 sugarche 的回复:]
用一个递归,把你点击的节点的子结点写入到listview中不就可以了.
这还需要定义事件吗?你响应treeview的nodemouseclick事件或者是afterselect事件不就可以了.
下面是代码,不知道是不是你要的.

/// <summary>
/// 递归方法
/// </summary>
/// <param name="parent"> </param>
private void ReadChildNodeList(TreeNode parent,ListView listView)
{
foreach(TreeNode node in parent.Nodes)
{
listView.Items.Add…
[/Quote]

这个能实现你需要的功能吧
回复
sugarche 2008-10-07
用一个递归,把你点击的节点的子结点写入到listview中不就可以了.
这还需要定义事件吗?你响应treeview的nodemouseclick事件或者是afterselect事件不就可以了.
下面是代码,不知道是不是你要的.

/// <summary>
/// 递归方法
/// </summary>
/// <param name="parent"></param>
private void ReadChildNodeList(TreeNode parent,ListView listView)
{
foreach(TreeNode node in parent.Nodes)
{
listView.Items.Add(node.Text);
ReadChildNodeList(node, listView);
}
}

/// <summary>
/// treeview的AfterSelect事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
this.listView1.Items.Clear();
ReadChildNodeList(e.Node, this.listView1);
}
回复
发动态
发帖子
C#
创建于2007-09-28

10.4w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.