2008-09-11 22 views

cevap

3

Bir geçici çözüm, öğelerin olmasını istediğiniz kadar uzun olan bir ImageList kullanmaktır. Sadece boş bir resmi arka plan rengiyle doldurun. Yatay olarak fazla yer kaplamamak için görüntüyü 1 genişlikte bile yapabilirsiniz.

8

Bu gönderi epeyce eskidir, ancak eğer en iyi seçeneği bulamadıysanız, yardımcı olabilecek bir blog post var, bu LVM_SETICONSPACING kullanımını içeriyor. bloguma göre

, Başlangıçta

, eklemek gerekir:

using System.Runtime.InteropServices; 

İleri, DLL ithal etmek gerekir, sen SendMessage'i yararlanmak, böylece için ListView parametrelerini değiştirin. Bu işlem tamamlandıktan sonra

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

aşağıdaki iki işlevi oluşturun:

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));  
} 

Sonra sadece ListView geçmek işlevini kullanın ve değerleri ayarlamak için. Örnekte, 64 piksel görüntü genişliğidir ve 32 piksel yatay boşluk/dolgu, 100 piksel resim yüksekliğidir ve 16 piksel dikey aralık/dolgu işlemidir ve her iki parametre de en az 4 piksel gerektirir.

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

Lütfen alakalı içeriği blog yayınınızda yanıtınıza gönderin. –

+1

'LVM_SETICONSPACING 'sadece Simge görünümünde ListViews için geçerlidir. Satır dolgusunu değiştirmek için Details (Görünüm) görünümünde eşdeğer bir şey yapmanın herhangi bir yolu (@Joel Lucsy'nin bir görüntüleyici ile yapılabileceği gibi satır yüksekliği değil)? –