【问题标题】:How to change ListView background image layout?如何更改 ListView 背景图像布局?
【发布时间】:2012-04-18 12:50:03
【问题描述】:

我试图找到一种方法来更改 ListView 控件上背景图像的布局。 我四处寻找,但没有得到任何直接的答案。

我可以看到有一个 ListView 属性 BackgroundImageLayout 应该可以完成这项工作。但是当我改变它时,除了触发 BackgroundImageLayoutChanged 事件之外,什么都没有发生。

如何更改 ListView 控件上的 BackgroundImageLayout?是否有任何可能的解决方法来实现我的目标?

PS.:我知道“解决”这个问题的 3rd 方控件,但我正在寻找一种无需任何额外组件即可完成任务的解决方案。

【问题讨论】:

    标签: c# winforms visual-studio-2010 listview windows-7


    【解决方案1】:

    ListView 是本机 Windows 控件。是的,它确实支持背景图像,LVM_SETBKIMAGE message 负责处理它。然而,它不支持样板 Winforms BackgroundImage 支持,值得注意的是 BackgroundImageLayout,这是 Winforms 为 Control 类实现并在 ControlStyles.UserPaint 打开时实现的属性。它不适用于原生 Windows 控件,它们自己绘制。

    为 ListView 编写 Winforms 包装类的人做了下一件好事,他向 ListView 类添加了一个名为 BackgroundImageTile 的 new 属性。本机 Windows 控件执行 实现的布局选项。这使您只剩下本机控件支持的两个布局选项。平铺或不平铺。

    同一个人做了一些非常英勇的事情来使 Winforms 包装类行为合理。该代码充满了解决本机控件怪癖的技巧。很棒的工作。如果 Windows 团队的人能够让 Winforms 人的生活更轻松,他的生活会轻松很多。但它不是那样工作的,ListView 的存在时间比 Winforms 长了很多。而且从一开始就设计得不是很好,微软在那段时间经历了相当大的成长痛苦。

    快进并更改规则,让您不再依赖旧代码:WPF、Silverlight、WinRT。

    【讨论】:

      【解决方案2】:

      根据MSDN,'ListView.BackgroundImageLayout 属性':

      "该 API 支持 .NET Framework 基础结构,并且不支持 旨在直接从您的代码中使用。”

      此属性对 ListView 控件的背景图像布局没有影响,因此它不会显示在设计器中或 IntelliSense 中。

      使用 BackgroundImage 属性设置背景图像。请参阅msdn 了解更多信息:

      除非你想用它来做一些花哨的事情吗?

      编辑:根据之前的帖子HERE:简短的回答是你不能。 =(

      如果您非常想要它,请尝试创建一个与您的 ListView 一样大小的空白图像。将您的图像添加到此图像并在其中添加一个位于中间的位置。在位图或图像下可能有与此类似的内容。

      【讨论】:

      • 我只想将 ListView 控件的背景图像“居中”。 oto 有没有可能做到这一点?
      • “ListView.BackgroundImageLayout = ImageLayout.Center;”不走运我假设?
      猜你喜欢
      • 1970-01-01
      • 2017-07-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-02
      • 1970-01-01
      相关资源
      最近更新 更多