如果值与文本框值匹配,则基于C#Hightlight DataGrid行

时间:2017-05-03 13:03:43

标签: c# winforms datagrid

如何根据textbox2中的值突出显示数据网格行?

最终,当在第2列中找到匹配值时,对应行上的QTY字段(第3列)将需要为最终用户扫描的每个QR码更改-1。一旦QTY值达到0,该行将需要突出显示为绿色。

我不能让它上班已经尝试了几种不同的方式编写foreach部分但没有运气

我的代码如下:

http://myhost.com/

1 个答案:

答案 0 :(得分:0)

您可以在该行的所有单元格中执行循环,并设置单元格样式属性。您可以为非选定行和选定行创建不同的样式,然后根据需要应用这些样式。

示例:

DataGridViewCellStyle selectedStyle = new DataGridViewCellStyle();
selectedStyle.BackColor = Color.LemonChiffon;
selectedStyle.ForeColor = Color.OrangeRed;

DataGridViewCellStyle defaultStyle = new DataGridViewCellStyle();
defaultStyle.BackColor = System.Drawing.Color.White;
defaultStyle.ForeColor = Control.DefaultForeColor;

foreach (DataGridViewRow row in iCBOMHDataGridView.Rows)
{
    if ((string)row.Cells[2].Value == textBox2.Text)
    {
        row.Selected = true;

        if(Decimal.Parse(row.Cells[3].Value.ToString()) > 0)
            row.Cells[2].Value = Decimal.Parse(row.Cells[2].Value.ToString()) - 1;
    }

    if (Decimal.Parse(row.Cells[3].Value.ToString()) <= 0)
    {
        foreach (DataGridViewCell col in row.Cells.AsParallel())
            col.Style = selectedStyle;
    }
    else
    {
        foreach (DataGridViewCell col in row.Cells.AsParallel())
            col.Style = defaultStyle;
    }  
}

如果您不想遍历单元格,只需更改每行的 DataRow.DefaultCellStyle 属性即可。但这会限制您的自定义选项。