如何更改ListView背景图像布局

本文关键字:图像 布局 背景 ListView 何更改 | 更新日期: 2023-09-27 18:30:14

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

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

如何更改ListView控件上的BackgroundImageLayout?有什么可能的变通办法来实现我的目标吗?

PS.:我知道第三方控制可以"解决"这个问题,但我正在寻找一个解决方案,可以在没有任何额外组件的情况下完成任务。

如何更改ListView背景图像布局

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。

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

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

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

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

除非你有什么新奇的东西,否则你想用它做什么?

编辑:根据前面的帖子:简短的答案是你不能=(

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