想实现这样的一个功能
让treeview保存上一次选择状态比如有1,2,3三个结点 我点了2之后 下一次打开窗口2会自动被选择我用静态变量保存了上一次选择的node并用下面代码,发现上一次所选的结点,并没有用深蓝色的背景给标记出来
trvDeptNameListIn.SelectedNode = selectNodes;
trvDeptNameListIn.SelectedNode.Checked=true;希望有知道的朋友 能指点一二!
不胜感谢!!!

解决方案 »

  1.   

    搂主说“下一次打开窗口2会自动被选择”要知道下一次打开窗口,重新加载树之后
    trvDeptNameListIn.SelectedNode = selectNodes; 中的这个“selectNodes”已经不是当前树中的对象了
      

  2.   

    我刚好写了一个:你只要记住最后选择的那个节点的name就行了
      其中:name_v是你要选中的节点的name,TreeNode[] trnds = treeView1.Nodes.Find(name_v, true);                  foreach (TreeNode nd4 in trnds)
                    {
                        if (nd4.Name.ToString()) == name_v)
                        {
                                  treeView1.SelectedNode=nd4;                          //定位                    }
                    }
      

  3.   

    回复搂主10、11楼的疑问:搂主的静态变量值肯定不是空的,关键是你保存的是一个引用类型的对象,当这个树重新装载之后
    树中的节点全是新生成的新对象,不再包含原来的对象了。搂主应该找一个值类型的数据保存在你的静态变量中,例如12楼说的name属性
    但要保证name属性在整个树中是唯一的。如果搂主坚持要直接保存节点对象,其实搂主在窗口重新打开,树重新装载之后,可以这样做:if(静态变量!=null && 静态变量.Name == 当前循环到的节点.Name)
        循环到的节点.Selected = true;以上两句实在搂主的树创建完毕后,再循环查找选中的过程中的做法,下面是在创建过程中直接选中的做法:if(静态变量!=null && 静态变量.Name == 你即将要新创的节点的Name)
        parentNode.ChildNodes.Add(静态变量); //即把之前保存的节点再次添加到树中
      

  4.   

    最后一个IF少写了一句,补充如下:if(静态变量!=null && 静态变量.Name == 你即将要新创的节点的Name) 
    {
        parentNode.ChildNodes.Add(静态变量); //即把之前保存的节点再次添加到树中
         this.treeView1.SelectedNode = 静态变量;//将其选中
    } 上面都是一些伪代码,不一定就能执行,楼主参考
      

  5.   

    感谢net5i的热心回复 
    已经用折中的办法实现了这样的效果看过以后疑问好像又多了起来 还是结贴吧 去看下MSDN了