更改DataGridViewButton颜色C#

更改DataGridViewButton颜色C#,c#,winforms,datagridview,C#,Winforms,Datagridview,我试图找出如何改变我的按钮的颜色,但它似乎被我的交替行颜色代码覆盖,我无法找出如何使我可以有交替行颜色和红色删除按钮 按钮代码: DataGridViewButtonColumn btnDelete = new DataGridViewButtonColumn(); dgvCarsPurchased.Columns.Add(btnDelete); btnDelete.HeaderText = "Delete"; btnDelete.Text = "

我试图找出如何改变我的按钮的颜色,但它似乎被我的交替行颜色代码覆盖,我无法找出如何使我可以有交替行颜色和红色删除按钮

按钮代码:

DataGridViewButtonColumn btnDelete = new DataGridViewButtonColumn();
        dgvCarsPurchased.Columns.Add(btnDelete);
        btnDelete.HeaderText = "Delete";
        btnDelete.Text = "Delete Record";
        btnDelete.Name = "btnDelete";
        btnDelete.DefaultCellStyle.ForeColor = Color.White;
        btnDelete.FlatStyle = FlatStyle.Flat;
        btnDelete.DefaultCellStyle.BackColor = Color.Red;

        btnDelete.UseColumnTextForButtonValue = true;
交替行颜色

this.dgvCarsPurchased.RowsDefaultCellStyle.BackColor = ColorTranslator.FromHtml("#3E606F");
        this.dgvCarsPurchased.AlternatingRowsDefaultCellStyle.BackColor =
            ColorTranslator.FromHtml("#91AA9D");

基本上,您需要将
DefaultCellStyle
更改为
CellTemplate

例如:

btnDelete.FlatStyle = FlatStyle.Flat;
btnDelete.CellTemplate.Style.BackColor = Color.Red;
btnDelete.CellTemplate.Style.ForeColor = Color.White;

我建议您使用CellFormatting事件:

private void dgvStatus_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex != btnDelete.Index || e.RowIndex < 0)
        return;

    if (e.RowIndex % 2 == 0)
        e.CellStyle.BackColor = ColorTranslator.FromHtml("#3E606F");        
    else
        e.CellStyle.BackColor = ColorTranslator.FromHtml("#91AA9D");
}
private void dgvStatus_CellFormatting(对象发送方,DataGridViewCellFormattingEventArgs e)
{
如果(e.ColumnIndex!=btnDelete.Index | | e.RowIndex<0)
返回;
如果(e.RowIndex%2==0)
e、 CellStyle.BackColor=ColorTranslator.FromHtml(“#3E606F”);
其他的
e、 CellStyle.BackColor=ColorTranslator.FromHtml(“#91AA9D”);
}
参考: