我遇到了Windows列表控件的问题(我专门使用MFC,但看起来它适用于Windows公共控件库中的所有列表控件)。
在我的特定情况下,我想创建一个包含两列或更多列的列表控件。第一列(0)是纯文本的,用于允许用户通过在该行中键入文本来跳转到条目。第二列(或三个,或四个,或其他)有一个图像(或图像和文本;无论哪种方式)。
这一切都很好,可以很容易地完成,但最终的列表控件最终在第0列的文本左侧有一个空格(它可能在RTL系统的右侧) 。这个间隔似乎是为图像保留的,我无法找到防止它的方法。 (排列列的特定顺序没有任何改变。)
环顾四周,我发现其他人抱怨同样的事情,特别是this thread导致this thread。建议的解决方案不起作用,因为如上所述,简单地缩小列零的宽度只是切断文本而不是图像间隔(加上,然后你必须防止和/或处理用户尝试的列宽的任何更改使)。
有没有人知道如何修复这个错误,而不是从头开始编写列表控件或使用CodeProject / CodeGuru /等上过于花哨的网格控件之一?
非常感谢。
答案 0 :(得分:0)
您是否尝试更改iIndent
结构的LVITEM
成员? MSDN说:
iIndent
版本4.70。缩进项目的图像宽度数。一个 单个缩进等于宽度 项目图片。因此,值1 将项目缩进宽度为1 图像,值2缩进两个 图像,等等。请注意这一点 仅支持项目的字段。 试图设置子项缩进 将导致调用函数 失败。
答案 1 :(得分:0)
列0在ListView中是特殊的。一旦将小图像列表分配给ListView,控件就会要求您在第0列中显示图像,因此它会为其留出空间。
解决方案: