datagridview删除单元格背景色C#

时间:2019-07-28 09:26:32

标签: c# datagridview

对于每一行,它将对所有具有黄色绿色背景色的单元格进行计数,并将该行的名称与之关联(即,在我的示例中,名称为“老师”和“学生”,如标题为“ DD”的列中所示)。是否可以删除或禁用背景色?它根本不起作用。你能帮我吗?我尝试了以下代码:

dgv.DefaultCellStyle.SelectionBackColor = dgv.DefaultCellStyle.BackColor;
var dgv = new DataGridView();
dgv.Columns.Add("s1", "s1");
dgv.Columns.Add("s2", "s2");
dgv.Columns.Add("s3", "s3");
dgv.Columns.Add("s4", "s4");
dgv.Columns.Add("s5", "s5");
dgv.Columns.Add("s6", "s6");
dgv.Columns.Add("DD", "DD");    
dgv.Rows.Add("Fiona", "Lila", "Ben", "Ella", "Leon", "John", "Teachers");
dgv.Rows.Add("Jack", "Luke", "Fiona", "Sophie", "Lila", "Leon", "Students");
dgv.AllowUserToAddRows = false;
dgv.Rows[0].Cells[0].Style.BackColor = Color.YellowGreen;
dgv.Rows[0].Cells[2].Style.BackColor = Color.YellowGreen;
dgv.Rows[0].Cells[4].Style.BackColor = Color.YellowGreen;
dgv.Rows[2].Cells[2].Style.BackColor = Color.YellowGreen;
dgv.Rows[2].Cells[4].Style.BackColor = Color.YellowGreen;
dgv.Rows[2].Cells[5].Style.BackColor = Color.YellowGreen;

var sums = dgv.Rows.Cast<DataGridViewRow>()
    .Select(row => new { 
        Name = row.Cells[row.Cells.Cast<DataGridViewCell>().First(cell => cell.OwningColumn.HeaderText == "DD").ColumnIndex].Value , 
        Count = row.Cells.Cast<DataGridViewCell>().Count(c => c.Style.BackColor == Color.YellowGreen)})
    .ToList();

var lb = new ListBox();
sums.ForEach(s => lb.Items.Add($"{s.Name}: {s.Count}")); 

enter image description here

1 个答案:

答案 0 :(得分:1)

您能删除这些代码行吗?

dgv.DefaultCellStyle.SelectionBackColor = dgv.DefaultCellStyle.BackColor;

dgv.Rows[0].Cells[0].Style.BackColor = Color.YellowGreen;
dgv.Rows[0].Cells[2].Style.BackColor = Color.YellowGreen;
dgv.Rows[0].Cells[4].Style.BackColor = Color.YellowGreen;
dgv.Rows[2].Cells[2].Style.BackColor = Color.YellowGreen;
dgv.Rows[2].Cells[4].Style.BackColor = Color.YellowGreen;
dgv.Rows[2].Cells[5].Style.BackColor = Color.YellowGreen;

@ Marcel16,如果此答案对您足够有所帮助,请单击接受” ,好吗? :)