void SetNodeCheckedByRightRuler(UserAndRight.User u) { this.treeView2.AfterCheck -= treeView2_AfterCheck; this.Cursor = Cursors.WaitCursor; foreach (TreeNode node in treeView2.Nodes) { if (u.IsSupper) { node.Checked = true; SetNodeChildCheckedByRightRuler(node, true); } else { UserAndRight.RightRuler r = u.Ruler.FindRight(node.Name, true) as UserAndRight.RightRuler; if (r != null) { node.Checked = r.RightState == UserAndRight.RightState.完全 ? true : false; if (node.Checked) { SetParentNodeChecked(node); } SetNodeChildCheckedByRightRuler(node, u.Ruler); } else { node.Checked = false; SetNodeChildCheckedByRightRuler(node, u.Ruler); } } } this.treeView2.AfterCheck += new TreeViewEventHandler(treeView2_AfterCheck); this.Cursor = Cursors.Default; }
void SetNodeChildCheckedByRightRuler(TreeNode node, UserAndRight.RightRuler r) { foreach (TreeNode childNode in node.Nodes) { UserAndRight.RightRuler right = r.FindRight(childNode.Name, true) as UserAndRight.RightRuler; if (right != null) { childNode.Checked = right.RightState == UserAndRight.RightState.完全 ? true : false; SetNodeChildCheckedByRightRuler(childNode, r); if (childNode.Checked) { SetParentNodeChecked(childNode); } } else { childNode.Checked = false; SetNodeChildCheckedByRightRuler(childNode, r); } } }
void treeView2_AfterCheck(object sender, TreeViewEventArgs e) { TreeNode node = treeView1.SelectedNode; if (node != null) { UserAndRight.RightRuler ruler = new UserAndRight.RightRuler(); if (node.FullPath.IndexOf("用户\\") == 0) { ruler = (node.Tag as UserAndRight.User).Ruler; } else { return; } string id = (e.Node.Tag as UserAndRight.Right).ID; UserAndRight.RightRuler r = ruler.FindRight(id, true); if (r != null) { r.RightState = (e.Node.Checked ? UserAndRight.RightState.完全 : UserAndRight.RightState.禁止); if (e.Node.Checked) { this.treeView2.AfterCheck -= treeView2_AfterCheck; SetParentNodeChecked(e.Node); this.treeView2.AfterCheck += new TreeViewEventHandler(treeView2_AfterCheck); } else if ((node.Tag as UserAndRight.User).IsSupper) { (node.Tag as UserAndRight.User).IsSupper = false; } Changed(); } } }