내 프로젝트는 WinForms, C#입니다.모든 TreeViewItem 하위를 선택 또는 선택 해제하십시오.
True로 설정된 CheckBox가있는 TreeView가있는 폼이 있습니다. 각각 여러 개의 자식 노드가있는 루트 노드가 몇 개 있습니다.
나는 모든 하위 노드가 부모와 동일한 체크/체크되지 않은 상태를 가지길 원합니다. 다음과 같은 이벤트 처리기를 작성했습니다 :
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
// return in case the event is induced by the code below
if (e.Action == TreeViewAction.Unknown)
{
return;
}
System.Diagnostics.Debug.WriteLine(string.Format("Checked - {0}", e.Node.Checked));
foreach (TreeNode subNode in e.Node.Nodes)
{
subNode.Checked = e.Node.Checked;
}
}
그러나 부모를 신속하게 클릭하면 매우 이상하게 작동합니다. 부모를 이미 선택하지 않은 상태에서 하위 노드를 모두 확인하도록 신속하게 확인하고 선택을 취소하여 쉽게 재현 할 수 있습니다.
이 작업을 올바르게 수행하는 방법은 무엇입니까?
클릭하면이 이벤트가 빠르게 호출되지 않습니다. System.Diagnostics.Debug.WriteLine (string.Format ("Checked - {0}", e.Node.Checked))을 추가했습니다. 두 번째 (선택 취소) 클릭에 대해서는 "Checked-false"를 볼 수 없습니다. – Alex
두 번 클릭 동작을 무시할 경우에만이 동작을 재현 할 수있었습니다. 그렇지 않으면 클릭하는 노드를 빠르게 확대/축소하면됩니다. – msergeant
msergeant, 항목 텍스트가 아닌 체크 박스를 빠르게 클릭하십시오. 확장되거나 붕괴되어서는 안됩니다. – Alex