0

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

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

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

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

4

2 回答 2

3

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

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

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

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

于 2012-04-04T22:30:56.233 回答
1

根据MSDN,“ListView.BackgroundImageLayout 属性”:

“该 API 支持 .NET Framework 基础结构,不打算直接从您的代码中使用。”

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

使用BackgroundImage属性设置背景图像。有关更多信息,请参阅msdn

那是除非你有一些你想用它做的花哨的东西?

编辑:根据以前的线程这里:简短的回答是你不能。=(

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

于 2012-04-04T18:59:20.790 回答