使用criterea对DataGridView行进行替代着色,同时保持着色单元格相同

时间:2017-02-17 09:33:34

标签: c# linq datagridview foreach casting

我确实有一个问题,但在我输入问题时我解决了这个问题。我希望没有人介意我仍然在这里发布它,因为我认为我可能对其他人有帮助,因为我在stackoverflow上找不到这个。这是我的第一篇文章,所以如果我不应该这样做,请告诉我;)

我按样本着色DataGridView中的行。但是我已经将某些细胞染色了,我想保持这种颜色。

    var sampleRows = dgvData.Rows.Cast<DataGridViewRow>()
        .Where(x=>x.Cells["Sample"].Value.ToString().Substring(0,4) == "SAMP");

    string lastSample = "";
    Color backColor = Color.LightGray;
    foreach (DataGridViewRow row in sampleRows) {
        string currentSample = row.Cells["Sample"].Value.ToString().Substring(0,15);
        if (currentSample != lastSample)
        {
            backColor = (backColor == Color.LightGray) ? Color.DarkGray : Color.LightGray;
            lastSample = currentSample;
        } 
        row.Cells.Cast<DataGridViewCell>()
            .Where(x => x.Style.BackColor == default(Color))
            .ToList().ForEach(x => x.Style.BackColor = backColor);
    }

仍然赞赏反馈。

0 个答案:

没有答案