我从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());
}
答案 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