C# winform 遞歸選中TreeView子節點
/// <summary>
/// 遞歸選中所有的自節點
/// </summary>
/// <param name="nodeThis">TreeNode</param>
private void checkAllChildNode(TreeNode nodeThis)
{
foreach (TreeNode childNode in nodeThis.Nodes)
{
childNode.Checked = nodeThis.Checked;
if (childNode.Nodes != null)
{
checkAllChildNode(childNode);
}
}
}
/// <summary>
/// 如果node本身的選中會造成父節點下所有的同級子節點都被選種則選中父節點(遞歸選擇)
/// </summary>
/// <param name="nodeThis">node</param>
private void checkParentNode(TreeNode nodeThis)
{
//獲取父節點
TreeNode parentNode = nodeThis.Parent;
if (parentNode == null)
{
return;
}
bool isAllChecked = true;
//遍歷所有同級
foreach (TreeNode node in parentNode.Nodes)
{
if (node.Checked != true)
{
isAllChecked = false;
break;
}
}
parentNode.Checked = isAllChecked;
if (parentNode.Parent != null)
{
checkParentNode(parentNode);
}
}
/// 遞歸選中所有的自節點
/// </summary>
/// <param name="nodeThis">TreeNode</param>
private void checkAllChildNode(TreeNode nodeThis)
{
foreach (TreeNode childNode in nodeThis.Nodes)
{
childNode.Checked = nodeThis.Checked;
if (childNode.Nodes != null)
{
checkAllChildNode(childNode);
}
}
}
/// <summary>
/// 如果node本身的選中會造成父節點下所有的同級子節點都被選種則選中父節點(遞歸選擇)
/// </summary>
/// <param name="nodeThis">node</param>
private void checkParentNode(TreeNode nodeThis)
{
//獲取父節點
TreeNode parentNode = nodeThis.Parent;
if (parentNode == null)
{
return;
}
bool isAllChecked = true;
//遍歷所有同級
foreach (TreeNode node in parentNode.Nodes)
{
if (node.Checked != true)
{
isAllChecked = false;
break;
}
}
parentNode.Checked = isAllChecked;
if (parentNode.Parent != null)
{
checkParentNode(parentNode);
}
}

浙公網安備 33010602011771號