我有一个包含DataGridViewButtonColumn的DataGridView。 我想更改此列中按钮的颜色。我已在单元格内设置按钮的填充,以便按钮不会填充单元格。 如果我使用此代码:
newRow.Cells["Name"].Style.BackColor = Color.Yellow;
我知道按钮和单元都是黄色的。 我只想要按钮黄色。 我在网上发现要更改按钮的颜色我应该更改按钮的 Backcolor 。 我无法从网格中检索按钮。我以这种方式检索了细胞:
DataGridViewCell dataGridViewCell = newRow.Cells["Name"];
DataGridViewButtonCell dataGridViewButtonCell = dataGridViewCell as DataGridViewButtonCell;
如何检索按钮? 或者在此链接中Change Color of Button in DataGridView Cell也存在类似的问题,但我无法覆盖Paint方法以更改按钮的背景颜色。我怎么解决这个问题? 谢谢
答案 0 :(得分:2)
这是进行必要的手绘画的简化方法。它利用系统方法绘制Cell的背景,它将在Button和内容中闪现,即Button和它的Text。
诀窍是简单地用四个填充的矩形覆盖外面。
private void dataGridView1_CellPainting(object sender,
DataGridViewCellPaintingEventArgs e)
{
if (e.CellStyle.BackColor == Color.Yellow)
{
int pl = 12; // padding left & right
int pt = 2; // padding top & bottom
int cw = e.CellBounds.Width;
int ch = e.CellBounds.Height;
int x = e.CellBounds.X;
int y = e.CellBounds.Y;
e.PaintBackground(e.ClipBounds, true);
e.PaintContent(e.CellBounds);
Brush brush = SystemBrushes.Window;
e.Graphics.FillRectangle(brush, x, y, pl + 1 , ch - 1);
e.Graphics.FillRectangle(brush, x + cw - pl - 2, y, pl + 1, ch - 1);
e.Graphics.FillRectangle(brush, x, y, cw -1 , pt + 1 );
e.Graphics.FillRectangle(brush, x, y + ch - pt - 2 , cw -1 , pt + 1 );
e.Handled = true;
}
}
您需要:
我认为你的填充是对称的..
以下是它的样子: