日期:2014-05-20  浏览次数:20826 次

treeview 加入节点时,如何找到父节点,加入到下面
treeview   加入节点时,如何找到父节点,加入到下面,在VB6中,直接一个方法就可以了add(,,父节点关键字,);C#中怎么不行呢?(注:WINFORM中)谢谢

------解决方案--------------------
你得有你自己选择父节点的规则,才能找父节点。

比如当前选中的,treeView.SelectedNode
或者是Tag是特殊内容的, 递归遍历所有的Node。


找到后加就好办了, node.Add 就行了。
------解决方案--------------------
//返回标记为szKey的树节点,null表示没找到指定的树节点
//RootNode为根节点
//szKey为某结点的Key,可以用TreeNode.Tag,也可以是TreeNode.Text

//从根节点开始,用入队出队非递归方式寻找指定的父节点
private TreeNode GettNodeByKey(TreeNode rootNode, string szKey) {
Queue myQ=new Queue();
TreeNode tn=null; //返回的节点
TreeNode tmpNode=null; //临时的节点

if (rootNode.Tag.ToString() ==szKey) tn=rootNode;
else if (rootNode.Nodes.Count > 0 ) myQ.Enqueue(rootNode); //入队

while(myQ.Count > 0){
tmpNode=(TreeNode) myQ.Dequeue (); //出队
foreach (TreeNode t1 in tmpNode.Nodes)
{
if (t1.Tag.ToString()== szKey)
{
tn=t1;
break;
}
else if (t1.Nodes.Count > 0) myQ.Enqueue (t1); //入队
}
if (tn!=null) break;
}
tmpNode=null;
myQ.Clear();
myQ=null;
return tn;
}