【问题标题】:Why is ListViewGroup sealed?为什么 ListViewGroup 是密封的?
【发布时间】:2023-03-22 03:00:01
【问题描述】:

我可以继承 ListViewItem 甚至 ListViewItem.ListViewSubItem,但我不能继承 ListViewGroup。

这是为什么呢?

【问题讨论】:

  • 为什么要从 ListViewGroup 派生。你想达到什么目标?
  • 标准 ListViewGroup 不支持 v6 常用控件的任何新功能。子类将是扩展组功能的自然方式。

标签: .net winforms listview


【解决方案1】:

ListViewGroup 是密封的,因为您无法添加或更改它的功能。该实现在ListViewGroup生效

ListViewGroup 是原生 Win32 控件的友好包装器。你不能继承一个新的类来希望添加功能 - 功能不在类中。


ImageList 被密封的原因是一样的。如果将图像列表分配给ListView,则该图像列表必须是原生 ImageList 控件的包装器,这就是列表视图的方式。您不能从 ImageList 下降以支持 alpha 混合的 PNG 图像列表 - 它只是行不通。

当封装不佳时,这些类是密封的,并且没有任何下降的意义,因为您无法合法地更改任何内容。

【讨论】:

    【解决方案2】:

    确实没有答案,因为微软会回答“Its by Design”,很多类都是密封的,这使得开发非常困难,在某些情况下,我们使用 Reflector 来了解类家族的工作方式,我们重新创建了自己的类来扩展功能。其中之一是构建验证和错误模板,但是对于这样的问题,除了设计之外没有其他答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-27
      • 2014-12-27
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      相关资源
      最近更新 更多