Asp.Net教程,WinForm教程,Asp.Net MVC,vs2008教程,vs2010教程,Silverlight技术,源码下载,Asp.Net视频教程
全站热门标签
vs2010 Silverlight 存储过程 水晶报表 ADO.NET JavaScript LINQ AjaxPro DataGridView 面向对象 Extjs GridView XML DevExpress HTML教程 Oracle jQuery 分页 GDI+ Visual C++2010 MySQL Office2010 WPF MVC Dojo WCF4.0 VB.NET Sql2005 textbox cookie WCF WinForm Discuz!NT SQL经典语句 T-SQL checkbox ASPxGridView F# asp.net SQL VS2008新特性 DropDownList Access TreeView Ajax VS2008 页面执行时间 Flex 字符串 回调 VB2005 DataSet C#时间 ASP.NET性能优化 用户在线检测 动画
FrameworkC#技术 VB.NET VC.NET WCF WPF
当前位置: 主页 > WinForm教程 > C#技术 >

C# WinForm TreeView节点选择影响其父子节点选中状态

时间:2010-06-26 01:32来源:未知 作者:admin 点击:

private void tviewQuickSort_MouseClick(object sender, MouseEventArgs e)
        {
            //获取单击的节点
            TreeNode root = tviewQuickSort.GetNodeAt(new Point(e.X, e.Y));
             //该节点是否被选中
            bool isChecked = root.Checked;

           if (root != null)
           {
               //该节点的选中状态影响其子孙节点的状态
               FooChild(root, isChecked);
              //该节点的选中状态影响其父祖节点的状态
              FooParent(root);
          }

        }

       
        private void FooChild(TreeNode node, bool isChecked)
        {
            node.Checked = isChecked;
            foreach (TreeNode nd in node.Nodes)
            FooChild(nd, isChecked);
        }

       
        private void FooParent(TreeNode root)
        {
          if (root.Parent != null)
             {
                 //兄弟节点被选的个数
                 int brotherNodeCheckedCount = 0;
              //遍历该节点的兄弟节点
                 foreach (TreeNode node in root.Parent.Nodes)
                                   
                     if (node.Checked == true)
                         brotherNodeCheckedCount += 1;
                 }
                 //兄弟节点全没选
                 if (brotherNodeCheckedCount == 0)
                 {
                     TreeNode parentNode = root.Parent;
                     parentNode.Checked = false;//其父节点也不选
                     FooParent(parentNode);
                 }
                 //兄弟节点中只要有一个被选
                 if (brotherNodeCheckedCount == 1)
                 {
                     TreeNode parentNode = root.Parent;
                     parentNode.Checked = true;
                     FooParent(parentNode);//其父节点也被选
                 }
             }
         }

(责任编辑:admin)
Tags:TreeView
责任编辑:admin
返回顶部
------分隔线----------------------------
推荐内容
骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价 骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价