两颗树,分别为Tree1和Tree2啦。
 
1.Tree2带有checkbox,当我选择父节点的时候,子节点也选中,选择某个子节点时,父节点也不选中。我现在只能做其中的一种。2。分别选择Tree1和Tree2上的节点时候,将值保存到数据库,当然Tree1 单选,Tree2有Checkbox 为多选啦,我现在是想点击Tree1的某个节点时,Tree2就显示以前勾选的节点,重新组成的新树。大家有好的建议吗?C# winform 程序 请大家帮帮忙 

解决方案 »

  1.   

    1.选择父节点的时候,子节点也选中:
    用递归,遍历你选择的节点的所有子节点,设置它们的状态为选中:
    TreeNode parent=Tree1.SelectedNode;
    SelectNodes(parent);//主调方法private void SelectNodes(TreeNode parent)
    {
       foreach(TreeNode node in parent.Nods)
       {
          ...//设置节点的当前状态为选中
          SelectNodes(node);
       }
    }2.选择某个子节点时,父节点不选中:
    这个好像不用写代码吧3.分别选择Tree1和Tree2上的节点时候,将值保存到数据库:
    这个就直接向数据库里添加数据就可以了,莫非两个树上的节点有关联?4.当然Tree1 单选,Tree2有Checkbox 为多选啦:
    不太明白5.点击Tree1的某个节点时,Tree2就显示以前勾选的节点,重新组成新树:
    不太理解,Tree1的某个节点跟Tree2的节点有关系吗?如果有的话,那就把保存在数据库里的值读出来,自己再Create一个新的树
      

  2.   

    谢谢楼上的细心解答, 小妹问的第一个问题已经解答了
     第二个问题应该是我没描述清楚吧其实就是将Tree1和Tree2俩个树节点的id保存在一张表中,我现在不知道如何将表中的数据读取出来 重新创建一个树。 
     
      

  3.   

    数据表:
    ID    ParentID
    1        0
    2        0
    3        0
    4        1
    5        1
    6        4
    7        2对应的树就是:
    1
       4
          6
       5
    2
       7
    3
      

  4.   

    楼主的问题我以前也遇到过。。
    问题2的关键就是存储tree2,存储一个棵树最简单的办法是用一个二维数组。
    相当于用一个矩形包围tree2,设置0或1即可。
      

  5.   

    酱紫,如果你的treeview不用保存的话,你可以用一个中间变量treeview来替换一下。
    如果需要保存的话,可以用序列化的方法,当然Treeview本身是不能序列化的,所以有人写了这么个方法。
    你看完就明白了,是酱紫的:
    http://hi.baidu.com/codeyuer/blog/item/6499e50901c65fac2fddd40f.html