【发布时间】:2010-08-21 05:22:46
【问题描述】:
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 行),但在处理完所有树节点之前我不知道如何禁用它。
而且我不想在我的表单上设置一个专门用于监控的计时器。
有人看到简单/明显的解决方案吗?
【问题讨论】:
标签: c# winforms checkbox treenode