zoukankan      html  css  js  c++  java
  • Winform TreeView 节点CheckBox选中,取消

    先看一下效果图

       private void treeView1_MouseClick(object sender, MouseEventArgs e)
    {
    TreeNode node
    = treeView1.GetNodeAt(new Point(e.X, e.Y));
    if (node != null)
    {
    ChangeChild(node, node.Checked);
    //影响子节点
    ChangeParent(node);//影响父节点
    }
    }

    //递归子节点跟随其全选或全不选
    private void ChangeChild(TreeNode node, bool state)
    {
    node.Checked
    = state;
    foreach (TreeNode tn in node.Nodes)
    ChangeChild(tn, state);
    }

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

    注意一定要在treeView1_MouseClick事件中调用方法,不要在treeView1_AfterCheck中调用,

    否则会引起递归错误。

  • 相关阅读:
    HDU 4608 I-number
    hdu 4607 ( Park Visit )
    ZROI十一集训Day2
    CodeForces1230
    模拟退火
    ZROI#1007
    ZROI#1006
    ZROI#1005
    ZROI#1004
    ZROI#962
  • 原文地址:https://www.cnblogs.com/leiOOlei/p/1963719.html
Copyright © 2011-2022 走看看