当前位置:编程学习 > C#/ASP.NET >>

这个问题一直困扰大家!结贴!(winForm Tree CheckBox控制 )

实现功能  C#  (winForm)本人在网上找的都是能实现单向的!最后自己组合写了一个!

一、当选中某子节点,那么他的父、爷、祖爷都选中,那就说只要子、孙有一个被选中,那么他的父、爷节点都选中
二、当选中某父节点,那么他的所有子、孙都选中,取消选中父节点那么他的子、孙都取消。

(TreeMenu   tree 的名字)

//事件AfterCheck
     private void TreeMenu_AfterCheck(object sender, TreeViewEventArgs e)
        {           
            if (e.Action != TreeViewAction.Unknown)
            {
                SetParentTreeNode(e.Node); 
                if (e.Node.Nodes.Count > 0)
                {
                    this.CheckAllChildNodes(e.Node, e.Node.Checked);
                }
            }
        }


  //控制子节点
        private void CheckAllChildNodes(TreeNode treeNode, bool nodeChecked)
        {
            foreach (TreeNode node in treeNode.Nodes)
            {
                node.Checked = nodeChecked;
                if (node.Nodes.Count > 0)
                {
                    this.CheckAllChildNodes(node, nodeChecked);
                }
            }
        }


 //控制父节点
        private void SetParentTreeNode(TreeNode node)
        {
            if (node.Parent != null)
            {
                if (node.Checked)
                {
                    node.Parent.Checked = node.Checked;                    
                    SetParentTreeNode(node.Parent);
                }
                else  
                {
                    bool b = false;

                    for (int i = 0; i < node.Parent.Nodes.Count; i++)
                    {
                        if (node.Parent.Nodes[i].Checked)
                        {
                            b = true;
                            break;
                        }
                    }

                    if (b)
                    {
                        node.Parent.Checked = true;
                    }
                    else
                    {
                        node.Parent.Checked = false;
                        this.SetParentTreeNode(node.Parent);
                    }
                }
            }
        } --------------------编程问答-------------------- 沙发。 --------------------编程问答-------------------- 不错,收藏了! --------------------编程问答-------------------- 似乎、好像、大概、或许、可能这个问题不难哦。 --------------------编程问答-------------------- 学习了.. --------------------编程问答-------------------- 这个贴我以前就发过了 --------------------编程问答-------------------- 不错,收藏 --------------------编程问答--------------------
引用 3 楼 shashengduguzhe 的回复:
似乎、好像、大概、或许、可能这个问题不难哦。

分享精神! --------------------编程问答-------------------- 这个收藏了 --------------------编程问答-------------------- o     --------------------编程问答--------------------
引用 8 楼 xtghdfu 的回复:
这个收藏了


2B~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --------------------编程问答-------------------- 似乎、好像、大概、或许、可能这个问题不难哦。 --------------------编程问答-------------------- 这个~~~那个~~~~~~~~~~~埃~~~~~~~~~ --------------------编程问答--------------------
引用 7 楼 lpingz 的回复:
引用 3 楼 shashengduguzhe 的回复:

似乎、好像、大概、或许、可能这个问题不难哦。

分享精神!


yes --------------------编程问答-------------------- yes
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,