Я знаю, что это сообщение довольно старое, однако, если вы никогда не нашли лучший вариант, у меня есть сообщение в блоге , которое может помочь, оно включает использование 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);