• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

c#学习(开发)

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

C# winform TreeView中关于checkbox选择的完美类

public static class TreeViewCheck
{
    /// <summary>
    /// 系列节点 Checked 属性控制
    /// </summary>
    /// <param name="e"></param>
    public static void CheckControl(TreeViewEventArgs e)
    {
        if (e.Action != TreeViewAction.Unknown)
        {
            if (e.Node != null && !Convert.IsDBNull(e.Node))
            {
                CheckParentNode(e.Node);
                if (e.Node.Nodes.Count > 0)
                {
                    CheckAllChildNodes(e.Node, e.Node.Checked);
                }
            }
        }
    }

    #region 私有方法

    //改变所有子节点的状态
    private static void CheckAllChildNodes(TreeNode pn, bool IsChecked)
    {
        foreach (TreeNode tn in pn.Nodes)
        {
            tn.Checked = IsChecked;

            if (tn.Nodes.Count > 0)
            {
                CheckAllChildNodes(tn, IsChecked);
            }
        }
    }

    //改变父节点的选中状态,此处为所有子节点不选中时才取消父节点选中,可以根据需要修改
    private static void CheckParentNode(TreeNode curNode)
    {
        bool bChecked = false;

        if (curNode.Parent != null)
        {
            foreach (TreeNode node in curNode.Parent.Nodes)
            {
                if (node.Checked)
                {
                    bChecked = true;
                    break;
                }
            }

            if (bChecked)
            {
                curNode.Parent.Checked = true;
                CheckParentNode(curNode.Parent);
            }
            else
            {
                curNode.Parent.Checked = false;
                CheckParentNode(curNode.Parent);
            }
        }
    }

    #endregion
}

调用方法:在treeview的AfterCheck事件中

private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
    TreeViewCheck.CheckControl(e)

}

posted on 2013-12-15 11:52  c#学习(开发)  阅读(489)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3