怎样根据node 的text属性的值是否等于str来选择某个TreeNode?

解决方案 »

  1.   

    用递归,判断每个节点的text属性
      

  2.   

    private void selectNode(TreeNode node)
    {
        foreach(TreeNode temp in node.Nodes)
        {
            if(temp.Text == str)
            {
                tree.Select();
                tree.SelectedNode = temp;
                break;
            }
            else
            {
                selectNode(temp);
            }
        }
    }把tree的根节点传进去
      

  3.   

    TreeNode FindNode(TreeNode root, string text)
    {
     foreach(TreeNode node in root.Nodes)
     {
      if(node.Text == text){
       return node;
      }
      TreeNode fNode = FindNode(node, text);
      if(fNode != null) return fNode;
     }
     return null;
    }
      

  4.   

    treeView1.SelectNode(FindNode(treeView1.Nodes[0], text));
      

  5.   

    如果没有根结点呢

    a
      1
      2 
    b
    c
    d
    我要在c节点下加一个同级的d节点呢?
      

  6.   

    sorry
    我表达错了
    我的意思是我加了d节点后
    d节点没有父节点了
    d和a是同级别的
    那我怎么选择d节点呢
      

  7.   

    如果是对TreeView操作的话,(treeView)
    如果是选中checkbox的话:
    string str = "abc";
    foreach(TreeNode tn in treeView.Nodes)
    {
    CheckNode(tn,str);
    }
    private void CheckNode(TreeNode tn,string str)
    {
    if(tn.Text.Trim() == str)
    tn.Checked = true;
    if(tn.Nodes.Count > 0)
    {
    foreach(TreeNode t in tn.Nodes)
    {
    CheckNode(t,str);
    }
    }
    }如果是select:
    如果要是有多个一致的情况该如何处理呢?是一发现一致,就停止,还是继续匹配?
    如果是一发现就停止:
    string str = "abc";
    foreach(TreeNode tn in treeView.Nodes)
    {
    CheckNode(tn,str);
    }
    private void CheckNode(TreeNode tn,string str)
    {
    if(tn.Text.Trim() == str)
    {
    treeView.SelectedNode = tn;
    return;
    }
    if(tn.Nodes.Count > 0)
    {
    foreach(TreeNode t in tn.Nodes)
    {
    CheckNode(t,str);
    }
    }
    }
    如果是一直找,将最后一个选定:
    string str = "abc";
    foreach(TreeNode tn in treeView.Nodes)
    {
    CheckNode(tn,str);
    }
    private void CheckNode(TreeNode tn,string str)
    {
    if(tn.Text.Trim() == str)
    {
    treeView.SelectedNode = tn;
    }
    if(tn.Nodes.Count > 0)
    {
    foreach(TreeNode t in tn.Nodes)
    {
    CheckNode(t,str);
    }
    }
    }如果不是对TreeView操作,那就看具体情况了。