J'ai un DataGridView avec quatre colonnes. Les trois premiers sont renvoyés en tant que tableau: rouge, vert et bleu. Toutes les valeurs sont comprises entre 0 et 255. J'ai ajouté par programmation une colonne appelée "Color". J'aimerais que la couleur de fond de cette colonne reflète le contenu RVB. Je peux voir les données rgb correctement, et en utilisant le débogueur, la couleur backcolor est définie correctement sur la propriété. Je peux également définir la couleur de fond de la colonne et elle s'affiche correctement. J'ai essayé de définir la couleur de fond de la cellule "Rouge" et cela ne fonctionne pas non plus.DataGridView Cell Backcolor non défini
Le code ci-dessous donne une colonne complètement blanche.
Voici mon code:
DataGridViewColumn DGC = new DataGridViewColumn();
DGC.Name = "Colour";
DGC.CellTemplate = new DataGridViewTextBoxCell();
dgPallette.Columns.Add(DGC);
foreach (DataGridViewRow DGR in dgPallette.Rows)
{
Color cellColor = Color.FromArgb(
int.Parse(DGR.Cells["Red"].Value.ToString()),
int.Parse(DGR.Cells["Green"].Value.ToString()),
int.Parse(DGR.Cells["Blue"].Value.ToString()));
DGR.Cells["Colour"].Style.BackColor = cellColor;
}
Toutes les idées?
Merci à l'avance Jim
Merci. Le contenu de la grille de données dépend d'une liste déroulante. J'ai accroché dans l'événement de changement selecteditem pour appeler le code ci-dessus contre le nouveau tableau retourné, et les couleurs s'affichent correctement. J'ai essayé d'appeler datagridview.Update() après le code, mais la première mise à jour ne se produit pas .... – Spodgy
Merci beaucoup. J'ai implémenté l'événement CellFormatting et cela semble avoir réglé le problème. – Spodgy
dgPallette_CellFormatting private void (object sender, DataGridViewCellFormattingEventArgs e) { if (e.ColumnIndex == dgPallette.Columns [ "couleur"] Index.) { DataGridViewRow DGR = dgPallette.Rows [e.RowIndex]; e.CellStyle.BackColor = Couleur.FromArgb ( int.Parse (DGR.Cells ["Rouge"]. Value.ToString()), int.Parse (DGR.Cells ["Vert"]. Value.ToString ()), int.Parse (DGR.Cells ["Bleu"]. Value.ToString())); } } – Spodgy