using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace Tiobon.Core.OPS.Tool.OPS.Tool { public static class TreeViewCheck { /// /// 系列节点 Checked 属性控制 /// /// public static void CheckControl(TreeViewCancelEventArgs e) { if (e.Action != TreeViewAction.Unknown) { if (e.Node != null && !Convert.IsDBNull(e.Node)) { CheckParentNode(e.Node); if (e.Node.Nodes.Count > 0) { CheckAllChildNodes(e.Node, !e.Node.Checked); } } } } #region 私有方法 //改变所有子节点的状态 private static void CheckAllChildNodes(TreeNode pn, bool IsChecked) { foreach (TreeNode tn in pn.Nodes) { tn.Checked = IsChecked; if (tn.Nodes.Count > 0) { CheckAllChildNodes(tn, IsChecked); } } } //改变父节点的选中状态,此处为所有子节点不选中时才取消父节点选中,可以根据需要修改 private static void CheckParentNode(TreeNode curNode) { bool bChecked = false; if (curNode.Parent != null) { foreach (TreeNode node in curNode.Parent.Nodes) { if (node.Checked) { bChecked = true; break; } } if (bChecked) { curNode.Parent.Checked = true; CheckParentNode(curNode.Parent); } else { curNode.Parent.Checked = false; CheckParentNode(curNode.Parent); } } } #endregion } }