【发布时间】:2010-10-22 10:42:28
【问题描述】:
这是一个 System.Windows.Forms.TreeView,而不是 WPF 或 Web TreeView。
我一定是错过了什么,因为我不敢相信这有那么难。
我的表单上有一个 TreeView。加载所有数据以填充 TreeView 非常慢,因此我只想加载顶级节点,然后在用户展开节点时填充子节点。问题是,如果一个节点没有任何子节点,它不会在节点旁边显示 + 号,这意味着它无法展开,这意味着我不能 捕获 Expanding 事件以加载子项。
几年前,当我使用 PowerBuilder 时,您会将 HasChildren(或类似的)属性设置为 true,以本质上对控件“撒谎”并强制它显示 +,然后您可以捕获 Expanding 事件。当没有子节点时,我无法弄清楚如何强制 + 出现在节点上。
我尝试了一种方法,我向每个节点添加一个虚拟节点,然后扩展检查虚拟节点是否存在并将其删除,然后加载子节点,但由于各种原因,不值得在这里讨论解决方案在我的情况下不可行。
我已经在 Google 上搜索了 c#、treeview、delayed、deferred、load、force、expansion 和其他一些术语的各种组合,但现在没有运气。
附:我在 SourceForge 上找到了 TreeViewAdv 项目,但如果可以避免的话,我宁愿不将新组件引入我们的环境。
【问题讨论】:
-
我一直使用虚拟节点法;它通常工作得很好。你能告诉我们更多关于它为什么不适合你的信息吗?