思路是正确的好像顺序有错误!应该先判断当前节点是否有子节点如果有在foreach!如果没有就不用foreach了!至于父节点,每个节点都有一个Patern的属性可以用它先来判断改节点是否有父节点如果有得到父节点在判断(递归)。可以完成!我以前做过!

解决方案 »

  1.   

    思路有问题:当本身被选中时,还要判断他的父接点的选中与否。如果已经选中,do nothing,else parent node should be selected.
    foreach(TreeNode node in tnc)
      {
        if(node.Nodes.Count>0)
        {
              if (node.CheckBox==false)
      {
                  GetCheckNode(node.Nodes);
                }else
              if(node.Checked==true)
                {
         Textboxddxh.Text=Textboxddxh.Text+node.NodeData+",";
         GetCheckNode(node.Nodes);
        }
         }
       else
        {
          if(node.Checked==true)
          Textboxddxh.Text=Textboxddxh.Text+node.NodeData+",";
          //////////////////////////////add some code here:递归判断(注意:递归判断)当前节点的父接点是否被选中:是,donothing;exit if(node.Nodes.Count>0);否,Textboxddxh.Text=Textboxddxh.Text+node.NodeData+",";continue 递归判断
          
        }
      }