日期:2014-05-18  浏览次数:21068 次

求助:点击treeView某节点,在listview中显示其所有子节点
在C#中要实现点击treeView中的某一节点,在listview中显示该节点下所有的子节点,该怎么做,需要定义事件吗,如果需要具体怎么做

------解决方案--------------------
用一个递归,把你点击的节点的子结点写入到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);
}
------解决方案--------------------
探讨
用一个递归,把你点击的节点的子结点写入到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…

------解决方案--------------------
楼主结帖吧。1楼说的确实能实现的。。
------解决方案--------------------
那就在就在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来判断也一样