求c#高手:在WINFORM中,通过文本框textBox搜索定位到treeview的相应的结点?怎么实现呢
该treeview有多少个子结点不确定,有多少层也不确定,因为是根据数据库的数据自动递归调用生成的。假设treeview的名为:treeview1,文本框为textBox...
该treeview有多少个子结点不确定,有多少层也不确定,因为是根据数据库的数据自动递归调用生成的。假设treeview的名为:treeview1,文本框为textBox1,怎么通过查询按钮实现通过textBox1的text内容直接选中treeview1对应的结点上,并展开它下面的所有子代,求详细实现代码,谢谢!
展开
2个回答
展开全部
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); //递归
}
}
我刚自己做的,试验成功,并加注释
{
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; //遍历所有节点 并且使背景色成为白色
把所有的节点 先改变成白色 然后 如果是选中的 就是 红色 就行了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询