using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace TEST { public partial class Form1 : Form { public Form1() { InitializeComponent(); // 给目录树添加结点 TreeNode group_animal = new TreeNode("动物"); TreeNode subgroup_animal = new TreeNode("哺乳动物"); TreeNode a1 = new TreeNode("小狗"); TreeNode a2 = new TreeNode("小猪"); TreeNode a3 = new TreeNode("小羊"); subgroup_animal.Nodes.Add(a1); subgroup_animal.Nodes.Add(a2); subgroup_animal.Nodes.Add(a3); group_animal.Nodes.Add(subgroup_animal); TreeNode subgroup_animal2 = new TreeNode("海洋动物"); TreeNode b1 = new TreeNode("鲨鱼"); TreeNode b2 = new TreeNode("鲸鱼"); TreeNode b3 = new TreeNode("泥鳅"); subgroup_animal2.Nodes.Add(b1); subgroup_animal2.Nodes.Add(b2); subgroup_animal2.Nodes.Add(b3); group_animal.Nodes.Add(subgroup_animal); group_animal.Nodes.Add(subgroup_animal2); this.treeView1.Nodes.Add(group_animal); TreeNode goup_plant = new TreeNode("植物"); this.treeView1.Nodes.Add(goup_plant); TreeNode zhongzhiwu = new TreeNode("种植物"); TreeNode beifang = new TreeNode("北方种植物"); TreeNode nanfang = new TreeNode("南方种植物"); zhongzhiwu.Nodes.Add(beifang); zhongzhiwu.Nodes.Add(nanfang); goup_plant.Nodes.Add(zhongzhiwu); TreeNode wheet = new TreeNode("小麦"); TreeNode corn = new TreeNode("玉米"); beifang.Nodes.Add(wheet); beifang.Nodes.Add(corn); TreeNode rice = new TreeNode("大米"); TreeNode ganzhe = new TreeNode("甘蔗"); nanfang.Nodes.Add(rice); nanfang.Nodes.Add(ganzhe); } private void button_Click(object sender, EventArgs e) { // 递归的对TreeView进行 //foreach (TreeNode t in treeView1.Nodes) //{ // TreeNode temp = SearchTreeNode(t, textBox1.Text); // if (temp!=null) // { // this.treeView1.SelectedNode = temp; // this.treeView1.Focus(); // return; // } //} TreeNode node = SearchTreeNode_2(treeView1.Nodes, textBox1.Text); if (node!=null) { this.treeView1.SelectedNode = node; this.treeView1.Focus(); } } private TreeNode SearchTreeNode(TreeNode node, string name) { // 如果没有子节点,则返回到上一层调用 if (node==null) { return null; } else { // 函数返回运行 if (node.Text.ToLower().Contains(name.ToLower())) { // return node; } TreeNode result =null; foreach (TreeNode t in node.Nodes) { // 遍历所有的子节点 result = SearchTreeNode(t, name); if (result!=null) { return result; } } return result; } } private TreeNode SearchTreeNode_2(TreeNodeCollection TNC, string name) { if (TNC == null) { // 没有子节点,说明已经到树的叶子结点的后面,函数应该返回 return null; } else { // 访问当前结点集合 TreeNode result = null; foreach (TreeNode node in TNC) { if (node.Text.ToLower().Contains(name.ToLower())) { result = node; return result; } result = SearchTreeNode_2(node.Nodes, name); if (result!=null) { return result; } } return result; } } } }