更改 DataGridViewButtonColumn 单元格中按钮的背景颜色
Change Backcolor of a button in a cell of a DataGridViewButtonColumn
我有一个包含 DataGridViewButtonColumn 的 DataGridView。
我想更改此列内按钮的颜色。我已经在单元格内设置了按钮的填充,这样按钮就不会填满单元格。
如果我使用此代码:
newRow.Cells["Name"].Style.BackColor = Color.Yellow;
我知道按钮和单元格都是黄色的。
我只想要黄色按钮。
我在网上发现要更改按钮的颜色,我应该更改按钮的 Backcolor。
我无法从网格中检索按钮。我以这种方式检索了单元格:
DataGridViewCell dataGridViewCell = newRow.Cells["Name"];
DataGridViewButtonCell dataGridViewButtonCell = dataGridViewCell as DataGridViewButtonCell;
我该如何找回按钮?
或者在此 link Change Color of Button in DataGridView Cell 中有一个类似的问题,但我无法覆盖 Paint 方法以更改按钮的背景色。我怎么解决这个问题?
谢谢
这是进行必要的单元格绘制的简化方法。它利用系统方法绘制 Cell 的背景,这将在 Button 和内容中发光,即 Button 及其文本。
诀窍是用四个填充的矩形简单地过度绘制外部。
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;
}
}
你会想要:
- 使用常见的引用来:
- 填充 (12,2,12,2)
- 按钮颜色(黄色)
- 单元格颜色 (window)
- 决定是否要在按钮周围绘制外边框
- 确保所有像素适合
我假设你的填充是对称的..
这里是这样的:
我有一个包含 DataGridViewButtonColumn 的 DataGridView。 我想更改此列内按钮的颜色。我已经在单元格内设置了按钮的填充,这样按钮就不会填满单元格。 如果我使用此代码:
newRow.Cells["Name"].Style.BackColor = Color.Yellow;
我知道按钮和单元格都是黄色的。 我只想要黄色按钮。 我在网上发现要更改按钮的颜色,我应该更改按钮的 Backcolor。 我无法从网格中检索按钮。我以这种方式检索了单元格:
DataGridViewCell dataGridViewCell = newRow.Cells["Name"];
DataGridViewButtonCell dataGridViewButtonCell = dataGridViewCell as DataGridViewButtonCell;
我该如何找回按钮? 或者在此 link Change Color of Button in DataGridView Cell 中有一个类似的问题,但我无法覆盖 Paint 方法以更改按钮的背景色。我怎么解决这个问题? 谢谢
这是进行必要的单元格绘制的简化方法。它利用系统方法绘制 Cell 的背景,这将在 Button 和内容中发光,即 Button 及其文本。
诀窍是用四个填充的矩形简单地过度绘制外部。
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;
}
}
你会想要:
- 使用常见的引用来:
- 填充 (12,2,12,2)
- 按钮颜色(黄色)
- 单元格颜色 (window)
- 决定是否要在按钮周围绘制外边框
- 确保所有像素适合
我假设你的填充是对称的..
这里是这样的: