2010-10-25 30 views
5

ListViews denetiminin öğeler için arka plan renginin, sütun başlığı renklerinin değiştirilmesiyle birlikte, öğeden öğeye, WinAmp'taki gibi değişmesi için nasıl yapabilirim?Varying ListViews öğe arka plan rengi

http://i.stack.imgur.com/30pQy.png

yakından ilk öğe koyu gri ve ikinci böylece siyah ve olduğunu görebilirsiniz bakarsak .

cevap

9

ListViewItem.BackColor özelliğini ayarlayabilirsiniz, ancak bunun her bir değişken hat için manuel olarak yapılması gerekir. Alternatif olarak, bunu otomatik olarak yapacak bir AlternateRowStyle özelliğine sahip olan DataGridView'u kullanabilirsiniz. Ancak, satırlarınızı diğer bir konu olan bir dizi koleksiyonda da hesaba katmanız gerekecektir. Basit durum için

:

foreach (ListViewItem item in listView1.Items) 
{ 
    item.BackColor = item.Index % 2 == 0 ? Color.Red : Color.Black; 
} 
+1

Boş Liste görünümü boyamak istiyorsak ne yapmalıyız – SurajSing

0

Sana bir döngüde satır (subitems) ekleyin götürün? Eğer öyleyse, istediğiniz rengi bulmak için bir döngü sayacı kullanın.

string[] strings = new string[]{"dild", "dingo"}; 
int i = 0; 
foreach (var item in strings) 
{ 
    Color color = i++ % 2 == 0 ? Color.LightBlue : Color.LightCyan; 
    ListViewItem lv = listView1.Items.Add(item); 
    lv.SubItems[0].BackColor = color; 
} 
0
for (int index = 0; index <= ListView1.Items.Count; index++) 
{ 
    if (index % 2 == 0) 
    { 
     ListView1.Items(index).BackColor = Color.LightGray; 
    } 

} 
+0

Kodunuzda, önce tüm öğeler tek renkle boyanacak, bundan sonra - bunların 1/2 tanesi yeniden boyanacaktır. Bu çok verimli değil sanırım. Bu yüzden, onları ekleyerek, yani sadece bir kez boyamak daha iyidir. – abatishchev

+0

Evet! Katılıyorum ... Sadece ListView öğesinde ekle için bir olay bulamıyorum ... Madde Boya ve Alt Öğe Boya olayları ateş gibi görünmüyor .... –

0
private static void RepaintListView(ListView lw) 
{ 
    var colored = false; 
    foreach (ListViewItem item in lw.Items) 
    { 
     item.BackColor = colored ? Color.LightBlue : Color.White; 
     colored = !colored; 
    } 
} 

Sen madde eklenmesinden sonra bu yöntemi çağırabilirsiniz. Ya da doğrudan

1

'u ekleyin. DrawItem olayını liste kutusunda taşıyın ve DrawMode değerini OwnerDrawVariable olarak ayarlayın. DrawItemEventArgs, dizine dayalı olarak ayarlanabilen bir BackColor özelliği sağlar (ayrıca argde de).