Datagrid在调整大小时变得模糊

时间:2013-03-14 16:33:28

标签: c# winforms datagrid

我正在使用windows窗体中的datagridview并为其分配数据源属性以加载网格。我想改变一些单元格的背景颜色(当列索引= 0时)但是 当我这样做,我调整表格我有问题,数据网格变得模糊或细胞没有正确显示。这些照片会更好地解释它。

调整大小之前: enter image description here

调整大小后: enter image description here

这是我的代码,我正在尝试格式化单元格...

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);              
     } 
}   

提前致谢!

1 个答案:

答案 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