Tree View 컨트롤의 AfterCheck 이벤트는 그 아래에있는 모든 하위 노드를 검사하고 항목이 선택되면 실행 단추를 사용합니다.CheckBoxes가있는 느린 TreeNode [다량]
1346 void TreeNode_AfterCheck(object sender, TreeViewEventArgs e) {
1347 if (!e.Node.Checked) return;
1348 foreach (TreeNode sub in e.Node.Nodes) {
1349 sub.Checked = e.Node.Checked;
1350 }
1351 RunButton.Enabled = IsANodeChecked();
1352 }
1429 static bool IsANodeChecked(TreeNode node) {
1430 if (node.Checked) return true;
1431 foreach (TreeNode sub in node.Nodes) {
1432 if (IsANodeChecked(sub)) {
1433 return true;
1434 }
1435 }
1436 return false;
1437 }
4881 개의 하위 노드가있을 때 루트 노드를 확인하면 약 7 초 동안 GUI가 중단됩니다.
한 번만 IsANodeChecked (Line 1351에서)를 호출하면되지만 모든 트리 노드가 처리 될 때까지 비활성화하는 방법을 알지 못합니다.
그리고 이것을 모니터링하기 위해 제 양식에 타이머를 갖고 싶지 않습니다.
누구나 간단하고 분명한 해결책을 알고 있습니까?
코드를 컴파일 할 수 없습니다. –