【发布时间】:2009-12-19 02:31:42
【问题描述】:
我有一个treeview控件,它的子节点映射到列表中的元素,当列表状态的元素发生变化时,我需要更新相应的treeview节点,另外,当用户选择一个treenode时,我可以映射到列表中的元素,记录映射的最佳方式是什么?
【问题讨论】:
标签: .net winforms treeview mapping
我有一个treeview控件,它的子节点映射到列表中的元素,当列表状态的元素发生变化时,我需要更新相应的treeview节点,另外,当用户选择一个treenode时,我可以映射到列表中的元素,记录映射的最佳方式是什么?
【问题讨论】:
标签: .net winforms treeview mapping
如果是标准的 WinForms TreeView,您可以在每个节点上使用 Tag property 来存储对相应列表项的引用。
如果你也使用ListView,每个ListViewItem也有一个Tag property,可以用来引用对应的treenode。
使用 TreeNodes 和 ListVIewItems 的 Tag 属性可以轻松实现它们之间的 2 路同步。
这些 Tag 属性是 object 类型的,因此您实际上可以在其中存储您需要的任何内容。在您的情况下,当用户编辑 ListViewItem 时,您首先获取 Tag 属性,将其转换为 TreeNode 对象并根据需要更新 TreeNode 的状态。
当用户编辑 TreeNode 项目时,反向应用相同的过程。
[更新]
在用户界面中,Tree 控件和 List 控件似乎在许多屏幕上齐头并进。然而,在 Windows 窗体中,TreeView 和 ListView(或 List)是完全独立的控件,根本不需要一起使用。因此,没有内置方法可以使这些控件彼此同步。 Tag 属性和/或事件是这些控件之间最常用的同步方法。
【讨论】:
我不记得这是否特别适用于 Winforms 中的 TreeView 控件,但http://updatecontrols.net/ 是一个很好的数据绑定设置,它使更新发生得非常快而且非常流畅。你应该顶一下。
【讨论】: