Tree View 控件的 AfterCheck 事件会检查其下方的所有子节点,如果选中某些内容,则启用“运行”按钮。
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 个子节点时检查根节点会挂掉 GUI 大约 7 秒。
我只需要调用一次 IsANodeChecked(在第 1351 行),但在处理完所有树节点之前我不知道如何禁用它。
而且我不想在我的表单上设置一个专门用于监控的计时器。
有没有人看到一个简单/明显的解决方案?