Comment changer la couleur d'arrière d'un sous-élément listview en utilisant sa propre valeur

StackOverflow https://stackoverflow.com/questions/3562414

Question

Comment puis-je changer la couleur par programmation arrière d'une seule cellule dans un listview en utilisant sa propre valeur?

text alt

Les valeurs de la colonne ColorFlag Provenant de la base de données.

Voici mon code:

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

Voici le code que j'ai essayé de changer la couleur d'arrière des cellules:

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

Merci à l'avance

Était-ce utile?

La solution

Pour autant que je peux dire, le code que vous avez l'air bien. Je viens de jeter ensemble une application Windows Forms rapide et jetai un ListView sur la forme avec deux colonnes en vue détaillée. Le code suivant fonctionne très 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 );

J'essayer de régler la BackColor avant d'ajouter l'élément. Il semble aussi que vous configurez tous les éléments à la même couleur qui est probablement pas ce que vous voulez.

Autres conseils

Jetez un oeil à ces liens:

C # ListView Détail, Mettez en surbrillance une seule cellule

Changer la couleur de la cellule d'affichage de liste en utilisant C # ( a une solution de travail)

Le point clé est de définir ceci:

listView1.Items[0].UseItemStyleForSubItems = false;

Pour ce faire:

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);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top