2010-08-25 23 views
12

Liste görünümündeki tek bir hücrenin arka rengini kendi değerini kullanarak nasıl programlayabilirim?Listview alt öğesinin arka rengini kendi değeriyle değiştirme

alt text

ColorFlag sütun değerleri veritabanından geldi. bir göz atın peşin

+0

Neden DataGridView kullanmıyorsunuz? – siride

+0

Henüz DataGridView kullanmayı bilmiyorum. – Rye

+0

Eh, bu öğrenmek için iyi bir zaman olabilir. Aslında bu kadar zor değil ve basit bir tablo oluşturmak için görsel tasarım araçları oldukça basittir. Bence zamanınızı öğrenmek için gerçekten tasarlanmamış bir şey yapmak için bunu yapmaktan daha iyi olacağını düşündüm. – siride

cevap

29

Bildiğim kadarıyla söyleyebilirim, sahip olduğunuz kod iyi görünüyor. Sadece hızlı bir Windows Forms uygulamasını bir araya getirdim ve form görünümünde iki sütun içeren bir ListView'a atladım. Aşağıdaki kod düzgün çalışıyor.

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

listView1.Items.Add(item1); 

Öğeyi eklemeden önce BackColor'u ayarlamayı denerim. Aynı zamanda, tüm öğeleri muhtemelen istediğiniz gibi olmayan aynı renge ayarladığınıza benziyor.

+0

Evet, bu benim problemim. – Rye

+0

Anladım! Teşekkür ederim. – Rye

+0

Vay, İyi çalışıyor .. teşekkürler. –

5

yılında

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

Teşekkür: Burada

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

Ben hücrelerin backcolor değiştirmeye çalıştık kodudur: Burada

benim kodudur bu bağlantılar:

C# ListView Detail, Highlight a single cell

önemli nokta bu ayarlamaktır (bir çalışma çözümü vardır):

listView1.Items[0].UseItemStyleForSubItems = false; 

yapın:

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

Gönderdiğiniz ikinci bağlantı, bir süre önce kullandığım bağlantıdır. Ancak, bununla ilgili problem, _colo değişkeninde ayarlanan son değerin sütunun arka rengi olacağıdır. – Rye

+1

@Rye, çünkü hepsini aynı renge ayarlıyorsunuz, _colo. Örneğime ve notuma bir göz atın. Öğeyi eklemeden önce BackColor'u ayarlamanız gerekir. – Josh

+0

Anladım. Teşekkür ederim. – Rye

İlgili konular