【问题标题】:TreeView node mapping in winformwinform中的TreeView节点映射
【发布时间】:2009-12-19 02:31:42
【问题描述】:

我有一个treeview控件,它的子节点映射到列表中的元素,当列表状态的元素发生变化时,我需要更新相应的treeview节点,另外,当用户选择一个treenode时,我可以映射到列表中的元素,记录映射的最佳方式是什么?

【问题讨论】:

    标签: .net winforms treeview mapping


    【解决方案1】:

    如果是标准的 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 属性和/或事件是这些控件之间最常用的同步方法。

    【讨论】:

    • 这是我目前正在使用的,我只是想知道这是否是最好的方法。
    • 取决于您所说的“最佳方式”是什么意思?这可能是最灵活的方式,因为您可以直接访问 TreeNode/ListViewItem。一个简单的参考也比每次您想查找特定项目时搜索列表或树要快得多。
    【解决方案2】:

    我不记得这是否特别适用于 Winforms 中的 TreeView 控件,但http://updatecontrols.net/ 是一个很好的数据绑定设置,它使更新发生得非常快而且非常流畅。你应该顶一下。

    【讨论】:

      猜你喜欢
      • 2013-10-14
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      相关资源
      最近更新 更多