求c#高手:在WINFORM中,通过文本框textBox搜索定位到treeview的相应的结点?怎么实现呢

该treeview有多少个子结点不确定,有多少层也不确定,因为是根据数据库的数据自动递归调用生成的。假设treeview的名为:treeview1,文本框为textBox... 该treeview有多少个子结点不确定,有多少层也不确定,因为是根据数据库的数据自动递归调用生成的。假设treeview的名为:treeview1,文本框为textBox1,怎么通过查询按钮实现通过textBox1的text内容直接选中treeview1对应的结点上,并展开它下面的所有子代,求详细实现代码,谢谢! 展开
 我来答
baisedebing
2011-12-22 · TA获得超过202个赞
知道小有建树答主
回答量:225
采纳率:100%
帮助的人:116万
展开全部
private void button1_Click(object sender, EventArgs e) //这个是你的查询按钮单击事件
{
foreach (TreeNode tnc in treeView1.Nodes) //遍历你的 treeView1
{
nextnodes(tnc, "节点9"); // 这个是你textBox1 中的文本
}
}

public void nextnodes(TreeNode node,string text) //遍历所有节点
{
foreach (TreeNode tn in node.Nodes)
{
if (tn.Text == text.Trim()) //判断节点的名称是否和你的treeview1中显示的Text值相等
{
tn.BackColor = Color.Red; //改变查找的节点背景色
showNodes(tn); //打开节点
}
}
foreach (TreeNode tn in node.Nodes)
{

nextnodes(tn,text); //递归
}
}

public void showNodes(TreeNode node) //打开节点
{
if (node != null)
{
node.Expand();
showNodes(node.Parent); //递归
}
}
我刚自己做的,试验成功,并加注释
追问
谢谢baisedebing的回答,基本上可以实现要求,但是,如果是最顶层节点的背景色不能改变和搜索过的节点背景色无法恢复原来的颜色。
追答
呵呵 颜色是我随便加上的
你还可以去掉啊
也可以
public void nextnodes(TreeNode node,string text) //遍历所有节点
{
foreach (TreeNode tn in node.Nodes)
{
tn.BackColor = Color.White; //遍历所有节点 并且使背景色成为白色

把所有的节点 先改变成白色 然后 如果是选中的 就是 红色 就行了
huaaixue
2011-12-22 · TA获得超过524个赞
知道小有建树答主
回答量:1070
采纳率:0%
帮助的人:450万
展开全部
貌似要用两个循环去遍历吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式