【问题标题】:Common uses for the Tag propertyTag 属性的常见用途
【发布时间】:2009-06-29 14:29:02
【问题描述】:

我已经开始大量使用它来将我的 UI 元素链接到他们的数据支持类(无论是什么)。您将 Tag 属性用于哪些常见用途?

确实,您使用它吗?我知道我已经很久没有这样做了。

【问题讨论】:

    标签: c# wpf winforms silverlight


    【解决方案1】:

    正如您所描述的,Tag 属性的最常见用法是我在 WinForms、WPF 和 Silverlight 中遇到并使用的最常见的用法是指示控件所关联的真实数据。这在 ListViewItem 实例或自动生成的用户界面上特别有用,您希望对多个对象使用相同的事件处理程序,其中只有目标数据不同(即要执行的操作保持不变)。

    但是,我还使用Tag 来存储枚举值(尽管您应该避免使用值类型,因为在将值分配给Tag 属性时会导致装箱)或用于确定的字符串需要执行的操作而不是执行它的数据,在一种特定的用法中,我存储了一个委托,以便我可以自动生成一些按钮并将它们的处理程序嵌入Tag(处理程序信息是以数据驱动的方式提供)。

    我确信还有很多其他方法可以使用Tag,还有很多其他方法可以将Tag 的用法替换为更强类型的东西,但我就是这样使用它的。

    【讨论】:

    • 代表?我想它应该有,但我什至从未想过代表也是对象。
    • 现在使用 ListViewItem 的标签:在文件夹/文件的层次结构中,我使用标签来存储文件的完整路径,而标题只显示名称。
    【解决方案2】:

    Tag 属性是一种古老的(在编程语言中)用于控件的保留。据我所知,它已被用于从 Visual Basic、delphi 和几乎任何其他基于 gui 的语言中。

    它只是一个额外的属性,允许您出于任何原因向控件添加数值。

    我已经看到它用于从计数器到保存控件所绑定的记录 id 的所有内容。

    【讨论】:

    • 我会避免在其中存储值类型,因为它会将值框起来。
    • 在 C# 中,它不是一个数值,而是一个对象。您可以保存对实际记录的引用,而不是保存记录 ID。
    【解决方案3】:

    这有点杂乱无章。例如,它通常用于将节点链接到数据元素的 TreeView。

    但我不会过度使用它,因为它非常公开且不太灵活。请注意,您几乎总是可以使用 Dictionary 来代替,这样可以拥有更多的控制权。

    【讨论】:

      【解决方案4】:

      我一直将它与 ListViews 和 TreeViews 一起使用。它使尝试查找基础数据更加更容易。事实上,我不确定没有它你将如何制作一个可读的 Winforms 应用程序。

      在运行时创建 ContextMenus 时,我也经常使用它。我将一个对象填充到每个 ToolStripMenuItem 的 Tag 成员中,然后我可以将每个菜单项的单击处理程序指向相同的方法。它会减少很多代码。

      我只是希望它不需要这么多的演员。

      【讨论】:

        猜你喜欢
        • 2011-01-27
        • 1970-01-01
        • 2010-11-16
        • 1970-01-01
        • 2019-12-12
        • 2021-08-26
        • 2020-02-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多