private void treeView1_AfterCheck( object sender, TreeViewEventArgs e){ if (e.Action != TreeViewAction.ByMouse) return ; SetParentNode(e.Node); SetChildNode(e.Node);} private void SetParentNode(TreeNode node){ if (node.Level > 0 ) { node.Parent.Checked = true ; SetParentNode(node.Parent); }} private void SetChildNode(TreeNode node){ foreach (TreeNode childNode in node.Nodes) { childNode.Checked = node.Checked; if (node.Nodes.Count > 0 ) SetChildNode(childNode); }}