我正在使用windows窗体中的datagridview并为其分配数据源属性以加载网格。我想改变一些单元格的背景颜色(当列索引= 0时)但是 当我这样做,我调整表格我有问题,数据网格变得模糊或细胞没有正确显示。这些照片会更好地解释它。
调整大小之前:
调整大小后:
这是我的代码,我正在尝试格式化单元格...
private void dg_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
// Clients color
if (e.ColumnIndex == 0)
{
int currentClient = e.RowIndex % p.AllClients.Count;
dg.Rows[e.RowIndex].Cells[0].Style.BackColor = Color.FromArgb(p.AllClients[currentClient].Color);
}
}
提前致谢!
答案 0 :(得分:1)
问题是甚至行都有透明的背景颜色。这是因为您正在使用Color.FromArgb(int argb)
并且您正在将Alpha通道设置为透明的低值,因此在重新调整大小时,单元格的OnBackgrounPaint
无法清除背景。像这样更改最后一行:
dg.Rows[e.RowIndex].Cells[0].Style.BackColor = p.AllClients[currentClient].Color;
如果客户端的属性Color
不是来自GDI +的Color
,而是某个32位数,则可以执行此操作:
dg.Rows[e.RowIndex].Cells[0].Style.BackColor = Color.FromArgb(p.AllClients[currentClient].Color);
Color newColor = dg.Rows[e.RowIndex].Cells[0].Style.BackColor;
dataGridView1.Rows[e.RowIndex].Cells[0].Style.BackColor = Color.FromArgb(255, newColor.R, newColor.G, newColor.B); //remove transparency from the color