Pregunta

¿Cómo puedo cambiar mediante programación el color de fondo de una sola célula en una vista de lista usando su propio valor?

text alt

Los valores en la columna ColorFlag Proviene de la base de datos.

Aquí está mi código:

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

Este es el código que he tratado de cambiar el color de fondo de las células:

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

Gracias de antemano

¿Fue útil?

Solución

Por lo que yo puedo decir, el código que tiene se ve bien. Me acaba de lanzar conjuntamente una aplicación de Windows Forms rápida y echada de un ListView en el formulario con dos columnas en la vista de detalle. El siguiente código funciona bien.

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

listView1.Items.Add( item1 );

Me gustaría tratar de establecer el BackColor antes de agregar el artículo. También parece que se está configurando todos los elementos al mismo color que probablemente no es lo que desea.

Otros consejos

Tome un vistazo a estos enlaces:

C # ListView Detalle, resalte una sola célula

Cambio de color de la lista de células vista mediante C # ( tiene una solución de trabajo)

El punto clave es establecer lo siguiente:

listView1.Items[0].UseItemStyleForSubItems = false;

Haga lo siguiente:

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);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top