功能详细描述:我要完成这样一个功能,如果treeview的某个节点状态发生变化,我就让其所有子节点(包括孙节点)的选中状态跟当前节点一样。并且进行判断,如果该节点所有同级节点的状态已经全部一致。其父节点的状态也应该跟当前节点一样。
方法写在aftercheck里面:
需要两个方法,方法1:就是让其所有子孙节点状态变成和当前节点一样。
/// <summary>
/// 判断该节点的子节点的选中情况
/// </summary>
/// <param name="TN"></param>
public void SelectOrCancel(TreeNode TN)
{
foreach (TreeNode TNSub in TN.Nodes)
{
TNSub.Checked = TN.Checked;
SelectOrCancel(TNSub);
}
}
方法2:
/// <summary>
/// 判断其父节点是否需要跟当前接点状态一致
/// </summary>
/// <param name="TN"></param>
public void PDParent(TreeNode TN)
{
TreeNode TNParent = TN.Parent;
if (TNParent == null)
{
return;
}
int NCount = TN.Parent.Nodes.Count;
int Count = 0;
for (int ni = 0; ni < NCount; ni++)
{
if (TNParent.Nodes[ni].Checked == TN.Checked)
{
Count++;
}
}
if (NCount == Count)
{
if (TNParent != TN.TreeView.Nodes[0])
{
TNParent.Checked = TN.Checked;
}
}
PDParent(TNParent);
}
OK,有了这两步,功能就实现了。