在TreeView中,结点的全面都有一个复选框,
我把每个接点都定义了一个变量,现在是如果复选框为选中,
那么此接点的变量就为1,反之为0。这个是递归选择代码
private void SelectAllNodes(TreeNodeCollection Nds, bool Selected)
        {
            foreach (TreeNode node in Nds)
            {
                if (node.Checked == Selected)
                    node.Checked = !Selected;
               
                SelectAllNodes(node.Nodes, Selected);
            }
请问是在TREEVIEW的哪个事件中添加变量改变的代码以及如何判断此结点的
复选框为已经是选中了呢?

解决方案 »

  1.   

    嗯?那个treeview的控件不是有那个chechk的属性去判断是否true还是false的吗   还要用变量去定义每个节点的东西?不理解
      

  2.   

    问提是,现在如果用Select的话,他要求的是用鼠标点击结点的文本
    而现在是用递归方法选中复选框,是Check了。树有复选框的话用鼠标点击结点
    ,此结点的复选框是不会变为选中状态的,而要点复选框才可以。
    能不能在递归的时候顺便给变量付值呢?
      

  3.   

    还是自己解决了,
    现在的问题是,如何将从数据库中读取出来的数据对应绑定到
    treeview中啊,如果对应结点的数据为1,那么此结点的复选框
    为选中状态,反之为未选中状态??????
      

  4.   

    递归绑定节点
     private void BindTV()
        {
         
            DataSet ds;//查询菜单数据
            if (ds.Tables[0].Rows.Count > 0)
            {
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    TreeNode rootNode = new TreeNode();
                    rootNode.Text = ds.Tables[0].Rows[i]["NAME"].ToString();
                   
                    rootNode.NavigateUrl = "http://#";
                    rootNode.Value = ds.Tables[0].Rows[i]["BH"].ToString();
                    DataSet dset = new DataSet();
                      
                    if (dset.Tables[0].Rows.Count > 0)
                        rootNode.Checked = true;
                    else
                        rootNode.Checked = false;
                    dset.Dispose();
                    this.TreeView1.Nodes.Add(rootNode);
                    BindTree(rootNode);
                    rootNode.Expand();
                }
            }
        }
     private void BindTree(TreeNode node)
        {
            DataSet dst = new DataSet();
            if (IsHasChild(node.Value.ToString(), out dst))
            {
                DataView dv = dst.Tables[0].DefaultView;
                dv.Sort = " BH";
                for (int i = 0; i < dv.Count; i++)
                {
                    TreeNode nd = new TreeNode();
                    nd.Text = dv[i]["NAME"].ToString().Trim();
                    nd.Value = dv[i]["BH"].ToString().Trim();
                    nd.NavigateUrl = "http://#";
                    DataSet dset = new DataSet();
                    
                    if (dset.Tables[0].Rows.Count > 0)
                        nd.Checked = true;
                    else
                        nd.Checked = false;
                    node.ChildNodes.Add(nd);
                    BindTree(nd);
                }
            }
            else
                return;
        }
      

  5.   

    这个是递归选择代码 
    private void SelectAllNodes(TreeNodeCollection Nds, bool Selected) 
            { 
                foreach (TreeNode node in Nds) 
                { 
                    if (node.Checked == Selected) 
                        node.Checked = !Selected; 
                  
                    SelectAllNodes(node.Nodes, Selected); 
                }