考虑一个小的算法,参考树型结构!
/*如果父节点勾选,则子节点缺省全部勾选。
 *如果父节点清空,则此站点的所有角色清空。
 * 
 *对于子节点。若所有子节点被清空,则父节点也清空。 
 *只要有一个子节点被勾选,则父节点也被勾选。 
 * 
 * 
 * */

解决方案 »

  1.   

    以前写的一个东西,希望对你有所帮助!
    if (aTreeNode.Nodes.Count == 0)//子节点被勾选,角色
    {
    TreeNode aParentNode = aTreeNode.Parent ;
    foreach(TreeNode aChildNode in aParentNode.Nodes)
    {
    if( aChildNode.Checked )
    bolIsChecked = true;
    }
    aParentNode.Checked = bolIsChecked;
    }
    else //父节点被勾选,站点。
    {
    foreach(TreeNode aChildNode in aTreeNode.Nodes )
    {

    aChildNode.Checked = aTreeNode.Checked  ;
    }
    }
    foreach (TreeNode aRootNode in this.tvwOrgRoleM.Nodes )
    {
    if (aRootNode.Checked)
    bolIsAnyoneChecked = true ;
    }
    if (!this.bolIsValidatedLoginM)
    this.cmdOkM.Enabled = bolIsAnyoneChecked;