您的位置:首页 > 编程语言 > C#

C#中遍历TreeView并查找和选定节点

2012-02-02 14:22 447 查看
首先先看一段MSDN上的示例程序:打印一个树中所有节点名称

privatevoid PrintRecursive(TreeNode treeNode)

{

// Print the node.

System.Diagnostics.Debug.WriteLine(treeNode.Text);

MessageBox.Show(treeNode.Text);

// Print each node recursively.

foreach (TreeNode tn
in treeNode.Nodes)

{

PrintRecursive(tn);

}

}



// Call the procedure using the TreeView.

privatevoid CallRecursive(TreeView treeView)

{

// Print each node recursively.

TreeNodeCollection nodes= treeView.Nodes;

foreach (TreeNode nin nodes)

{

PrintRecursive(n);

}

}

然后要说明的是一下TreeView类和TreeNode类之间的关系:TreeView类中有个只读属性是Nodes,它是属于TreeNodeCollection类型的,而对于一个TreeView它的Nodes属性就是返回treeView根结点的集合。

然后就是我的递归遍历查找一个树节点的方法(由于程序需要我是根据树节点的ImageIndex属性查找的):

private TreeNode FindTreeNode(int imageIndex, TreeNode tnParent)

{

if (tnParent==
null)

returnnull;

if (tnParent.ImageIndex== imageIndex)

return tnParent;

TreeNode tnRet =null;

foreach (TreeNode tnin tnParent.Nodes)

{

tnRet = FindTreeNode(imageIndex, tn);

if (tnRet!=
null)

break;

}

return tnRet;

}

private TreeNode CallFindNode(int imageIndex, TreeView treeView)

{

TreeNodeCollection nodes = treeView.Nodes;

foreach (TreeNode nin nodes)

{

TreeNode temp = FindTreeNode(imageIndex, n);

if (temp!=
null)

return temp;

}

return
null;

}

/// <summary>

/// 这个是一个点击事件,其中改变了选中节点,

/// 改变选中节点的同时就触发了selectedNodeChanged事件

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

void myControlTransactions_AddCustomer(object sender, EventArgs e)

{

TreeNode temp = CallFindNode(3, treeView1);

if (temp
!= null)

treeView1.SelectedNode = temp;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: