1private void treeViewProcess_AfterCheck(object sender, TreeViewEventArgs e)
2 {
3 if (e.Node.Level == 0)
4 {
5 e.Node.TreeView.AfterCheck -= treeViewProcess_AfterCheck;
6 foreach (TreeNode subnode in e.Node.Nodes)
7 {
8 subnode.Checked = e.Node.Checked;
9 }
10 e.Node.TreeView.AfterCheck += new TreeViewEventHandler(treeViewProcess_AfterCheck);
11 }
12 else if (e.Node.Level == 1)
13 {
14 bool check = true;
15 int i = 0;
16 while (i<e.Node.Parent.Nodes.Count && check)
17 {
18 check = check && e.Node.Parent.Nodes[i].Checked;
19 i++;
20 }
21 e.Node.TreeView.AfterCheck -= treeViewProcess_AfterCheck;
22 e.Node.Parent.Checked = check;
23 e.Node.TreeView.AfterCheck += new TreeViewEventHandler(treeViewProcess_AfterCheck);
24 }
25 }