Come modificare il colore di sfondo di un elemento secondario ListView utilizzando il proprio valore
Domanda
Come posso cambiare a livello di codice il colore retro di una singola cella in una lista utilizzando il proprio valore?
I valori nella colonna ColorFlag venuto dal database.
Ecco il mio codice:
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); }
Ecco il codice che ho cercato di cambiare il colore di sfondo delle celle:
for (int _i = 0; _i < _owLV.Items.Count; _i++)
{
_myListView.Items[_i].UseItemStyleForSubItems = false;
_myListView.Items[_i].SubItems[3].BackColor = Color.FromArgb(_colo);
}
Grazie in anticipo
Soluzione
Per quanto posso dire, il codice che avete guarda bene. Ho appena buttato insieme una rapida applicazione Windows Form e lanciai un ListView sul modulo con due colonne in vista di dettaglio. Il seguente codice funziona bene.
var item1 = new ListViewItem( "Item 1");
item1.SubItems.Add( "Color" );
item1.SubItems[1].BackColor = Color.FromArgb( -16711936 );
item1.UseItemStyleForSubItems = false;
listView1.Items.Add( item1 );
Vorrei provare a impostare il BackColor prima di aggiungere la voce. Sembra inoltre che si sta impostando tutti gli elementi dello stesso colore che probabilmente non è ciò che si desidera.
Altri suggerimenti
Date un'occhiata a questi link:
C # ListView Dettaglio, evidenziare una singola cella
colore della lista cella vista Modifica utilizzando C # ( ha una soluzione di lavoro)
Il punto chiave è quello di impostare questo:
listView1.Items[0].UseItemStyleForSubItems = false;
Fare questo:
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);
}