更改 DataGridView 中按钮的颜色
Change color of Button in DataGridView
我到处搜索这个question.The关于这个post的答案:Change Color of Button in DataGridView Cell没有回答我关于字体的问题。
我尝试了以下方法:
DataGridViewRow r = dataGridView.Rows[0];
r.Cells[1].Style.BackColor = Color.Red;
我也试过:
DataGridViewButtonColumn btnCOl = new DataGridViewButtonColumn();
btnCOl.FlatStyle = FlatStyle.Popup;
DataGridViewRow r = dataGridView.Rows[0];
r.Cells[1].Style = new DataGridViewCellStyle { BackColor = Color.LightBlue };
还是没用。
这一行我也注释掉了:
// Application.EnableVisualStyles();
如果有人知道如何更改DataGridViewButtonColumn中单个按钮的背景颜色,请帮忙。
编辑:
我想为列中的单元格设置不同的颜色,例如有些是红色的,有些是绿色的。我不想为整列设置颜色。
更改整个列的背景色
作为一个选项,您可以将 DataGridViewButtonColumn
的 FlatStyle
属性 设置为 Flat
并将其 Style.BackColor
设置为您想要的颜色:
var C1 = new DataGridViewButtonColumn() { Name = "C1" };
C1.FlatStyle = FlatStyle.Flat;
C1.DefaultCellStyle.BackColor = Color.Red;
更改单个单元格的背景色
如果要为不同的单元格设置不同的颜色,将列或单元格的FlatStyle
设置为Flat
后,将不同单元格的Style.BackColor
设置为不同的颜色即可:
var cell = ((DataGridViewButtonCell)dataGridView1.Rows[1].Cells[0]);
cell.FlatStyle = FlatStyle.Flat;
dataGridView1.Rows[1].Cells[0].Style.BackColor = Color.Green;
如果您想有条件地更改单元格的背景颜色,您可以在基于单元格值的 CellFormatting
事件中进行。
备注
如果您更喜欢 Button
的标准外观而不是平面样式,您可以处理 CellPaint
事件:
void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex < 0 || e.ColumnIndex < 0)
return;
if (e.ColumnIndex == 0) // Also you can check for specific row by e.RowIndex
{
e.Paint(e.CellBounds, DataGridViewPaintParts.All
& ~( DataGridViewPaintParts.ContentForeground));
var r = e.CellBounds;
r.Inflate(-4, -4);
e.Graphics.FillRectangle(Brushes.Red, r);
e.Paint(e.CellBounds, DataGridViewPaintParts.ContentForeground);
e.Handled = true;
}
}
试试这个
DataGridViewButtonCell bc = new DataGridViewButtonCell();
bc.FlatStyle = FlatStyle.Flat;
bc.Style.BackColor = Color.AliceBlue;
您可以将此单元格分配给您需要的行
这是一个小示例,其中 DataGridView dgvSample 已插入表单
for (int i = 0; i <= 10; i++)
{
DataGridViewRow fr = new DataGridViewRow();
fr.CreateCells(dgvSample);
DataGridViewButtonCell bc = new DataGridViewButtonCell();
bc.FlatStyle = FlatStyle.Flat;
if (i % 2 == 0)
{
bc.Style.BackColor = Color.Red;
}
else
{
bc.Style.BackColor = Color.Green;
}
fr.Cells[0] = bc;
dgvSample.Rows.Add(fr);
}
我到处搜索这个question.The关于这个post的答案:Change Color of Button in DataGridView Cell没有回答我关于字体的问题。
我尝试了以下方法:
DataGridViewRow r = dataGridView.Rows[0];
r.Cells[1].Style.BackColor = Color.Red;
我也试过:
DataGridViewButtonColumn btnCOl = new DataGridViewButtonColumn();
btnCOl.FlatStyle = FlatStyle.Popup;
DataGridViewRow r = dataGridView.Rows[0];
r.Cells[1].Style = new DataGridViewCellStyle { BackColor = Color.LightBlue };
还是没用。
这一行我也注释掉了:
// Application.EnableVisualStyles();
如果有人知道如何更改DataGridViewButtonColumn中单个按钮的背景颜色,请帮忙。
编辑: 我想为列中的单元格设置不同的颜色,例如有些是红色的,有些是绿色的。我不想为整列设置颜色。
更改整个列的背景色
作为一个选项,您可以将 DataGridViewButtonColumn
的 FlatStyle
属性 设置为 Flat
并将其 Style.BackColor
设置为您想要的颜色:
var C1 = new DataGridViewButtonColumn() { Name = "C1" };
C1.FlatStyle = FlatStyle.Flat;
C1.DefaultCellStyle.BackColor = Color.Red;
更改单个单元格的背景色
如果要为不同的单元格设置不同的颜色,将列或单元格的FlatStyle
设置为Flat
后,将不同单元格的Style.BackColor
设置为不同的颜色即可:
var cell = ((DataGridViewButtonCell)dataGridView1.Rows[1].Cells[0]);
cell.FlatStyle = FlatStyle.Flat;
dataGridView1.Rows[1].Cells[0].Style.BackColor = Color.Green;
如果您想有条件地更改单元格的背景颜色,您可以在基于单元格值的 CellFormatting
事件中进行。
备注
如果您更喜欢 Button
的标准外观而不是平面样式,您可以处理 CellPaint
事件:
void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex < 0 || e.ColumnIndex < 0)
return;
if (e.ColumnIndex == 0) // Also you can check for specific row by e.RowIndex
{
e.Paint(e.CellBounds, DataGridViewPaintParts.All
& ~( DataGridViewPaintParts.ContentForeground));
var r = e.CellBounds;
r.Inflate(-4, -4);
e.Graphics.FillRectangle(Brushes.Red, r);
e.Paint(e.CellBounds, DataGridViewPaintParts.ContentForeground);
e.Handled = true;
}
}
试试这个
DataGridViewButtonCell bc = new DataGridViewButtonCell();
bc.FlatStyle = FlatStyle.Flat;
bc.Style.BackColor = Color.AliceBlue;
您可以将此单元格分配给您需要的行
这是一个小示例,其中 DataGridView dgvSample 已插入表单
for (int i = 0; i <= 10; i++)
{
DataGridViewRow fr = new DataGridViewRow();
fr.CreateCells(dgvSample);
DataGridViewButtonCell bc = new DataGridViewButtonCell();
bc.FlatStyle = FlatStyle.Flat;
if (i % 2 == 0)
{
bc.Style.BackColor = Color.Red;
}
else
{
bc.Style.BackColor = Color.Green;
}
fr.Cells[0] = bc;
dgvSample.Rows.Add(fr);
}