You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.1 KiB
77 lines
2.1 KiB
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
|
|
{
|
|
/// <summary>
|
|
/// 系列节点 Checked 属性控制
|
|
/// </summary>
|
|
/// <param name="e"></param>
|
|
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
|
|
}
|
|
}
|
|
|