以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  TreeView的联动复选框  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=76186)


--  作者:卷积内核
--  发布时间:7/29/2009 5:03:00 PM

--  TreeView的联动复选框
private void tvSysFunctionMenu_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        ...{
            if (e.Node != tvSysFunctionMenu.Nodes[0])
            ...{
                SetChildNodeChecked(e.Node);
                SetParentNodeChecked(e.Node);
            }
            else
            ...{
                SetChildNodeChecked(e.Node);
            }
        }


        //根据父节点状态设置子节点的状态
        private void SetChildNodeChecked(TreeNode parentNode)
        ...{

foreach (TreeNode node in parentNode.Nodes)
            ...{
                node.Checked = parentNode.Checked;
                if (node.Nodes.Count > 0)
                ...{
                    SetChildNodeChecked(node);
                }
            }
        }

        //根据子节点状态设置父节点的状态
        private void SetParentNodeChecked(TreeNode childNode)
        ...{
            TreeNode parentNode = childNode.Parent;
            if (!parentNode.Checked && childNode.Checked) //当子结点选中,父结点没选中时,则:选中父结点
            ...{

  parentNode.Checked = true;
            }
            else if (parentNode.Checked && !childNode.Checked) //取消选中其下全部子结点时,其父结点也取消
            ...{
                int checks = 0; //统计子结点的个数(为0时表示取消了其下全部子结点)
                foreach (TreeNode node in parentNode.Nodes)
                ...{
                    if (node.Checked)
                    ...{
                        checks++;
                        break;
                    }
                }
                if (checks == 0) //子结点都取消选中时,其父结点也取消

...{
                    parentNode.Checked = false;
                    if (!parentNode.Index.Equals(0))
                    ...{
                        SetParentNodeChecked(parentNode);
                    }
                }
            }
        }

        //节点选中状态更改
        protected void TreeNodeCheckStatusChanged(object sender, TreeNodeMouseClickEventArgs e)
        ...{
            SetChildNodeChecked(e.Node);
            // 判断是否是根节点
            if (!e.Node.Index.Equals(0))
            ...{
                SetParentNodeChecked(e.Node);

            }
        }


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
8,199.219ms