樹視圖控件的AfterCheck事件檢查它下面的所有子節點,並啓用運行按鈕(如果選中了某項)。帶有複選框的慢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個子節點時檢查根節點會掛起GUI大約7秒鐘。
我只需要調用IsANodeChecked(在1351行)一次,但我不知道如何禁用它,直到所有的樹節點都被處理完畢。
而且我不想在我的表單上專門用於監視此計時器。
有沒有人看到一個簡單/明顯的解決方案?
您的代碼無法編譯。 – 2010-08-20 19:35:11