2010-10-25 14 views
5

मैं इसे कैसे बना सकता हूं ताकि आइटम्स के लिए ListViews नियंत्रण का पृष्ठभूमि रंग कॉलम हेडर रंग बदलने के साथ आइटम से आइटम में WinAmp में भिन्न हो?Varying ListViews आइटम पृष्ठभूमि रंग

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

आप देखें, तो बारीकी से आप देख सकते हैं पहले आइटम एक गहरे भूरे रंग है और दूसरा काला और इतने पर है।

उत्तर

9

आप ListViewItem.BackColor संपत्ति सेट कर सकते हैं, हालांकि इसे प्रत्येक वैकल्पिक रेखा के लिए मैन्युअल रूप से किया जाना है। वैकल्पिक रूप से आप DataGridView का उपयोग कर सकते हैं जिसमें AlternateRowStyle संपत्ति है जो स्वचालित रूप से ऐसा करेगी - यद्यपि आपको अपनी पंक्तियों को एक प्रकार के संग्रह में डेटाबेस करने की आवश्यकता होगी जो एक अन्य विषय है।

सरल मामले के लिए:

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

अगर हम एक खाली सूची दृश्य – SurajSing

0

मैं इसे ले कि आप एक पाश में पंक्तियों (subitems) जोड़ सकता हूँ? यदि आप चाहते हैं कि कौन सा रंग आप चाहते हैं तो एक लूप काउंटर का उपयोग करें।

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

पेंट करना चाहते हैं तो हमें क्या करना चाहिए, आपके कोड में, पहले सभी आइटम एकल रंग में चित्रित किए जाएंगे, उसके बाद - उनमें से 1/2 को पुनर्निर्मित किया जाएगा। यह बहुत कुशल नहीं है, मुझे लगता है। तो उन्हें जोड़ने पर पेंट करना बेहतर है, यानी केवल एक बार। – abatishchev

+0

हां! मैं सहमत हूं ... यह सिर्फ इतना है कि मुझे सूची दृश्य में आइटम जोड़ने के लिए कोई ईवेंट नहीं मिल रहा है ... आइटम पेंट और सब आइटम पेंट घटनाएं आग लगती नहीं हैं .... –

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

आप आइटम इसके बाद इस विधि कॉल कर सकते हैं। या सीधे इसे

1

सूची बॉक्स पर DrawItem ईवेंट को संभालें और DrawModeOwnerDrawVariable पर सेट करें। DrawItemEventArgsBackColor संपत्ति प्रदान करता है जिसे इंडेक्स (तर्क में भी) के आधार पर सेट किया जा सकता है।

संबंधित मुद्दे