选中NODE时,子NODE全部选中,如果先中的NODE有PARENT NODE时,则选中PARENT NODE。 取消NODE时,如果父NODE下面还有NODE选中则不变,如果没有父NODE 取消选择。 //邦定TREEVIEW private void BuildMenu(string ParentId,TreeNode ParentNode) { object[] Params = new object[2]; Params[0] = "PID"; Params[1] = ParentId; DataSet ds = “........” DataTable dt = ds.Tables[0]; for (int i = 0; i < dt.Rows.Count; i++) { TreeNode tn = new TreeNode(); tn.Name = dt.Rows[i]["MenuId"].ToString(); tn.Text = dt.Rows[i]["MenuDesc"].ToString(); ParentNode.Nodes.Add(tn); BuildMenu(dt.Rows[i]["MenuId"].ToString(), tn); } } //全选取消选择 private void CheckParentNode(TreeNode tn) { if (tn.Parent != null) { TreeNode tn1 = tn.Parent; if (tn.Checked) { tn1.Checked = tn.Checked; } else { bool v_ischecked = false; foreach (TreeNode childnode in tn1.Nodes) { if (childnode.Checked) { v_ischecked = true; } } tn1.Checked = v_ischecked; } CheckParentNode(tn1); } } private void CheckChildrenNode(TreeNode tn) { foreach (TreeNode childnode in tn.Nodes) { childnode.Checked = tn.Checked; CheckChildrenNode(childnode); } }