2010-08-25 20 views
12

मैं अपने स्वयं के मूल्य का उपयोग करके एक सूची में एक सेल के बैक रंग को प्रोग्रामेटिक रूप से कैसे बदल सकता हूं?अपने स्वयं के मूल्य का उपयोग करके एक सूचीदृश्य सबिटैम के बैककलर को कैसे बदलें

alt text

ColorFlag स्तंभ में मान डेटाबेस से आया है।

यहाँ मेरी कोड है:

for (int _i = 0; _i < _owLV.Items.Count; _i++) 
      { 
       _myListView.Items[_i].UseItemStyleForSubItems = false; 
       _myListView.Items[_i].SubItems[3].BackColor = Color.FromArgb(_colo); 
      } 

अग्रिम

+0

आप डेटाग्रिड व्यू का उपयोग क्यों नहीं कर रहे हैं? – siride

+0

मुझे नहीं पता कि अभी तक DataGridView का उपयोग कैसे करें। – Rye

+0

अच्छा, यह सीखने का एक अच्छा समय हो सकता है। वास्तव में यह मुश्किल नहीं है और एक सरल ग्रिडव्यू स्थापित करने के लिए दृश्य डिजाइनर उपकरण काफी सरल हैं। मुझे लगता है कि आपका समय सीखने में बेहतर होगा कि सूची दृश्य के साथ लड़ने से ऐसा करने के लिए जो वास्तव में ऐसा करने के लिए तैयार नहीं है। – siride

उत्तर

29

, कोड आपके पास ठीक लग रहा है। मैंने बस एक त्वरित विंडोज फॉर्म एप्लिकेशन को फेंक दिया और फॉर्म में एक सूची दृश्य को दो कॉलम के साथ विस्तृत दृश्य में फेंक दिया। निम्नलिखित कोड ठीक काम करता है।

var item1 = new ListViewItem("Item 1"); 
item1.SubItems.Add("Color"); 
item1.SubItems[1].BackColor = Color.FromArgb(-16711936); 
item1.UseItemStyleForSubItems = false; 

listView1.Items.Add(item1); 

मैं आइटम जोड़ने से पहले बैककोलर सेट करने का प्रयास करूंगा। ऐसा लगता है कि आप सभी वस्तुओं को एक ही रंग में सेट कर रहे हैं जो शायद आप जो चाहते हैं वह नहीं है।

+0

हां, यह मेरी समस्या है। – Rye

+0

समझ गया! धन्यवाद। – Rye

+0

वाह, ठीक काम कर रहा है .. धन्यवाद। –

5

धन्यवाद पर एक नज़र डालें:

foreach(DataRow dr in _dataTbl.Rows) 
     { 
      _markOW = dr["Mark"].ToString(); 
      _stock = dr["Stock"].ToString(); 
      _SteelSectio = dr["SteelSection"].ToString(); 
      _colo = (Int32)dr["Color"]; 


      ListViewItem _lvi = new ListViewItem(_markOW); 
      _lvi.SubItems.AddRange(new string[]{_SteelSectio, _stock,  _colo.ToString()}); 

      _myListView.Items.Add(_lvi); } 

यहाँ कोड है कि मैं कोशिकाओं के backcolor बदलने की कोशिश की है ये लिंक:

C# ListView Detail, Highlight a single cell

Changing color of list view cell using C#

प्रमुख मुद्दा यह स्थापित करने के लिए है (एक काम समाधान है):

listView1.Items[0].UseItemStyleForSubItems = false; 

यह करें: जहाँ तक मेरा बता सकते हैं

foreach (DataRow dr in _dataTbl.Rows) 
{ 
    _markOW = dr["Mark"].ToString(); 
    _stock = dr["Stock"].ToString(); 
    _SteelSectio = dr["SteelSection"].ToString(); 
    _color = (Int32)dr["Color"]; 

    ListViewItem _lvi = new ListViewItem(_markOW); 

    _lvi.SubItems.AddRange(new string[] {_SteelSectio, _stock, _color.ToString() });  
    _lvi.UseItemStyleForSubItems = false; 
    _lvi.SubItems[2].BackColor = Color.FromArgb(_color); 

    _myListView.Items.Add(_lvi); 
} 
+0

आपके द्वारा पोस्ट किया गया दूसरा लिंक वह है जिसे मैं थोड़ी देर पहले उपयोग करता हूं। लेकिन इसके साथ समस्या यह है कि परिवर्तनीय _colo में अंतिम मान सेट कॉलम का पिछला रंग होगा। – Rye

+1

@ राई ऐसा इसलिए है क्योंकि आप उन्हें सभी एक ही रंग में सेट कर रहे हैं, _colo। अंत में मेरे उदाहरण और मेरे नोट पर एक नज़र डालें। आइटम जोड़ने से पहले आपको बैककोलर सेट करना चाहिए। – Josh

+0

समझ गया। धन्यवाद। – Rye