본문 바로가기
프로그래밍 언어/WPF

[C#] TreeView 상위 노드 체크시 하위 노드 연동

by Jinwood 2022. 1. 7.
반응형

상위 노드가 체크된 경우 하위 노드들이 모두 일괄 체크되거나,

반대로 상위 노드가 체크 해제된 경우 하위 노드들이 모두 일괄 체크 해제되는 코드를 만들어보았다.

 

우선, TreeView에서 AfterCheck 이벤트 발생 시 동작하도록 설정하였다.

아래 코드를 보면 node의 Nodes를 확인(자식 노드)하여 체크 상태를 따라가도록 설정하는 것이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
private void tv_AfterCheck(object sender, TreeViewEventArgs e)
{
    // 상위 노드 체크/언체크시 하위 노드도 함께 체크/언체크 되도록 설정
    var action = e.Action;
    var node = e.Node;
 
    var children = node.Nodes;
    for (int k = 0; k < children.Count; k++)
    {
        children[k].Checked = node.Checked;
    }
}
cs

 

생각보다 복잡하진 않아서 빠르게 구현할 수 있었다.

보완해야할 점은 체크/언체크를 빠르게 연속적으로 클릭할 경우, 연산이 따라가지 못하는지 체크 상태가 연동되지 못하는 것이다. (너무 빠르게 클릭하는것이 아니라면 문제되지 않음)

반응형

댓글