当前位置:  开发笔记 > 编程语言 > 正文

.NET ListView行填充

如何解决《.NETListView行填充》经验,为你挑选了1个好方法。

似乎没有办法更改.NET ListView中所有行的填充(或行高).有人有优雅的黑客攻击吗?



1> Quinn Johns..:

我知道这篇文章相当陈旧,但是,如果你找不到最好的选择,我有一个可能有用的博客文章,它涉及利用LVM_SETICONSPACING.

根据我的博客,

最初,您需要添加:

using System.Runtime.InteropServices;

接下来,您需要导入DLL,以便可以使用SendMessage来修改ListView参数.

[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);

完成后,创建以下两个函数:

public int MakeLong(short lowPart, short highPart)
{
    return (int)(((ushort)lowPart) | (uint)(highPart << 16));
}

public void ListViewItem_SetSpacing(ListView listview, short leftPadding, short topPadding) 
{     
    const int LVM_FIRST = 0x1000;     
    const int LVM_SETICONSPACING = LVM_FIRST + 53;     
    SendMessage(listview.Handle, LVM_SETICONSPACING, IntPtr.Zero, (IntPtr)MakeLong(leftPadding, topPadding));      
} 

然后使用该函数,只需传入ListView,然后设置值.在该示例中,64像素是图像宽度,32像素是我的水平间距/填充,100像素是图像高度,16像素是我的垂直间距/填充,并且两个参数都需要最少4个像素.

ListViewItem_SetSpacing(this.listView1, 64 + 32, 100 + 16);

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有