2
我有一个简单的WinForms应用程序与TreeView控件。 我正在尝试创建ExpandAll函数。它调用获取选定节点并运行递归函数WinForms:导航TreeView在BackgroundWorker线程
private void expandNode2(TreeNode tn)
{
if (tn == null) return;
tn.TreeView.BeginUpdate();
Application.DoEvents();
tn.Expand();
tn.TreeView.EndUpdate();
foreach (TreeNode tnChild in tn.Nodes)
{
expandNode2(tnChild);
}
}
如果树很大,表单被冻结。如何在backgroundworker线程中展开树?当我调用这个函数时,我收到了交叉线程错误。
这似乎不错扩大,我会尝试, 谢谢。我知道我可以使用expandall,但这里有另一个想法:树通过WCF从db中填充。我想要有测试应用程序来为WCF和db创建加载。我点击按钮,树逐级扩展。这样我可以在应用程序或N个应用程序中运行N个表单,并且它们将创建自动加载。 – Oleg
在这种情况下,用户看到扩展的树,但没有看到进度,逐步扩大。 – Oleg
在这种情况下,我认为你有点后退。而不是构建树,然后尝试逐层扩展它。为什么在从db中加载节点时不能构建具有扩展节点的树?只要我尝试使用treeview.Nodes.Find复制比treeView.Nodes [0]更深的节点,树就停止了扩展。我可以从一棵已经填充的树中一次性扩展一个节点的唯一方法是删除已完成的bw中的节点,并重新添加该节点的扩展副本。 – Krill