请问  当子结点全选时,勾选父节点,同时禁用子结点,就是不勾选子节点如何实现?

解决方案 »

  1.   


    private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
            {           
                if (e.Node.Checked)
                {
                    foreach (TreeNode node in e.Node.Nodes)
                    {
                        node.Checked = true;
                        // = false;
                    }
                }
                else
                {
                    foreach (TreeNode node in e.Node.Nodes)
                    {
                        node.Checked = false;
                        // = false;
                    }
                }禁用子节点难!建议使用Developer Express .NET里面的树控件!
      

  2.   

    1楼的代码貌似这样就可以
    private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
    {
        foreach (TreeNode node in e.Node.Nodes)
        {
            node.Checked = e.Node.Checked;
        }
    }
      

  3.   


    //试试,未测试
    //只是 根-父-子 三层节点,多层未考虑
    private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
    {  
      TreeNode curNode = e.Node;
      bool selChildAll = true; //子节点全选
      bool flag = false;       //存在子节点  if(curNode.Nodes > 0)  flag = true;  //当前是父节点
      if (flag)
      {
        foreach (TreeNode node in curNode.ChildNodes)
        {
           if(!node.Checked) 
           {
             selChildAll = false;
             break;
           }
        }
        if(selChildAdd)
        {
          foreach(TreeNode node in curNode.ChildNodes)
          {
             node.Checked = false;
          }
        }
      }
      else                               //当前是子节点
      {
         if(e.Parent.Checked) curNode.Checked = false;
      }
      

  4.   

    楼上的请问treeView中有 treeView1_AfterCheck这样的事件吗??
      

  5.   

    有TreeNodeCheckChanged事件和TreeNodeExpanded这两个事件,没有AfterCheck和afterExpand事件