0

我从 2 天以来一直在努力解决这个问题。

我有一个 XML 文件,其中包含颜色作为 htmlColor 代码,在我的程序中,我有一个 DataGridView,它向我显示 hexCodes 中的值,我可以单击它并使用 ColorDialog 更改颜色值,然后将单元格 BackColor 设置为选定的颜色并将十六进制代码作为新值返回给我。

对不起,我不能发布图片,因为我没有 10 名声望(我是新人)

我想要的是,当我在我的程序中打开 XML 文件时,单元格应该具有单元格内所写内容的 BackColor。

我试过这个但不起作用:(

private void dgvColors_CellFormatting(object sender, 
                                      DataGridViewCellFormattingEventArgs e)
{
  Theme theme = new Theme();
  foreach (KeyValuePair<string, Color> colour in theme.Colors)
         dgvColors.Columns["colKey"].DefaultCellStyle.BackColor = 
                   ColorTranslator.FromHtml(colour.Value.ToString());      
}
4

2 回答 2

1

设置为之后FlatStyleFlat您可以更改Backcolor每个单元格的 。使用该Normal样式,您只能在Button.

此示例DataGridViewButtonCells在加载 DGV 后创建并绘制这些单元:

for (int r = 0; r < DGV.Rows.Count; r++)
{
    DGV[4, r] = new DataGridViewButtonCell();
    ((DataGridViewButtonCell)DGV[4, r]).Style.BackColor = Color.OrangeRed;
    ((DataGridViewButtonCell)DGV[4, r]).FlatStyle = FlatStyle.Flat;   
    ((DataGridViewButtonCell)DGV[4, r]).Value = r + "RR";
}

如果你得到正确的十六进制值,你的代码应该是可适应的。

于 2014-10-24T10:54:22.083 回答
0

所以问题出在 ColorTranslator() 上,

它适用于这个版本的代码:

 private void dgvMenuColors_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
{ 
foreach (DataGridViewRow row in dgvMenuColors.Rows) 
{ 
row.DefaultCellStyle.BackColor = ColorTranslator.FromHtml(row.Cells[1].Value.ToString()); 
} 
} 

:D

于 2014-10-24T14:37:41.713 回答