解决方案 »

  1.   

           private void adv_ry_NodeClick(object sender, DevComponents.AdvTree.TreeNodeMouseEventArgs e)
            {
                if (e.Node.Nodes.Count!=0)
                {
                    foreach (DevComponents.AdvTree.Node item in e.Node.Nodes)
                    {
                        item.Checked = e.Node.Checked;
                        
                    }
                }
                if (e.Node.Parent != null)
                {
                    if (e.Node.Checked)
                    {
                        e.Node.Parent.Checked = false;
                    }
                }
            }
    自己鼓捣了一下 不是想要的那种效果 
      

  2.   

            private void adv_ry_NodeClick(object sender, DevComponents.AdvTree.TreeNodeMouseEventArgs e)
            {
                //父节点选中 选中父节点下面的子节点
                if (e.Node.Nodes.Count!=0)
                {
                    foreach (DevComponents.AdvTree.Node item in e.Node.Nodes)
                    {
                        item.Checked = e.Node.Checked;
                        
                    }
                }
                if (e.Node.Parent != null)//判断选中节点有没有父节点,如果没有父节点,说明点击的是父节点
                {
                    if (!e.Node.Checked)//如果子节点未被选中
                    {
                        e.Node.Parent.Checked = false;//那么父节点也不被选中
                    }
                    e.Node.Parent.Checked = true;//默认父节点被选中
                    foreach ( DevComponents.AdvTree.Node items in e.Node.Parent.Nodes)//遍历同级所有节点
                    {
                        if (!items.Checked)//只要出未选中节点
                        {
                              e.Node.Parent.Checked = true;//设置父节点被选中
                        }
                    }
                }
            }
    可是 不是我想要的效果 
      

  3.   

            private void viewtree()
            {            try
                {
                    // 取默认公司名称
                    BLL.sys_code_mx codemx = new BLL.sys_code_mx();
                    Model.sys_code_mx modelmx = codemx.GetModel(0, 1);
                    DevComponents.AdvTree.Node node = new DevComponents.AdvTree.Node();                node.Name = modelmx.Interpretation.ToString();
                    node.Text = modelmx.Interpretation.ToString();
                    node.TagString = "D0"; // 存部门id
                    node.Expanded = true;
                    this.adv_ry.Nodes.AddRange(new DevComponents.AdvTree.Node[] { node });
                    this.adv_ry.SelectedNode = this.adv_ry.Nodes[0];
                    NodeClick(this.adv_ry.SelectedNode);            
                }
                catch (Exception ex)
                {
                    sys.Pub.msg.show(ex.Message, "e");            }        }  
    顺便为下 初始化树形的时候 我如何不通过NODECLICK  遍历所有节点 但是不显示在页面 页面只有点开 才展开树形
      

  4.   

     if (e.Node.Checked)   这个条件 应该是false的时候  设置父节点不选中