如何使用htmlColor设置DataGridViewButtonCell BackColor?

时间:2014-10-24 09:56:50

标签: c# xml winforms datagridview datagridviewcellstyle

我从2天开始就遇到了这个问题。

我有一个包含Colors作为htmlColor代码的XML文件,在我的程序中我有一个DataGridView,它显示了hexCodes中的值,我可以点击它并用ColorDialog更改颜色值然后设置将BackColor单元格移动到所选颜色,并将hexCode作为新值返回。

抱歉,我不能发布一张图片,因为我没有10个声誉(我是新的)

我想要的是当我在程序中打开XML文件时,单元格应该具有单元格内的wrriten的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());      
}

2 个答案:

答案 0 :(得分:1)

FlatStyle设置为Flat后,您可以更改每个单元格的Backcolor。使用Normal样式,您只能在Button周围看到1像素宽的框架。

此示例创建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";
}

如果正确获得十六进制值,您的代码应该是适应性的。

答案 1 :(得分: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