c# - 根据两个数据表中的差异更改 datagridview 中的颜色?

标签 c# winforms datagridview datatable

我有两个数据表,每个有 1 列:

dtTempCM
dtOldTempCM

在两个表中,唯一的列名是Column1

我还有 2 个数据 GridView ,每个都绑定(bind)到一个数据表:

dgvCurrentCM.DataSource = dtTempCM;
dgvOldCM.DataSource = dtOldTempCM;

如果它们不匹配,我如何比较每一行,并在一个(或两个)数据 GridView 中突出显示它?到目前为止,我有这个:

foreach (DataRow row1 in dtTempCM.Rows)
{
   foreach (DataRow row2 in dtOldTempCM.Rows)
   {
        var array1 = row1.ItemArray;
        var array2 = row2.ItemArray;

        if (array1.SequenceEqual(array2))
        {
            //change row/cell color in dgvCurrentCM to red
            //change row/cell color in dgvOldCM to red
        }
    }
}

有什么想法吗?谢谢!

编辑:我也试过这个,但是它改变了每个单元格的颜色,因为它将 dgvOldCM 中的每一行与 dgvCurrentCM 中的一行进行比较:

foreach (DataGridViewRow row1 in dgvCurrentCM.Rows)
{
    foreach (DataGridViewRow row2 in dgvOldCM.Rows)
    {
        if (row1.Cells[0].Value != row2.Cells[0].Value)
        {
            row1.DefaultCellStyle.ForeColor = Color.Red;
            row2.DefaultCellStyle.ForeColor = Color.Red;
        }
    }
}

最佳答案

我会在其中一个 gridview 上进行迭代,并像这样与另一个进行比较:

    for (int i = 0; i < dgvCurrentCM.RowCount; i++)
    {
        if (dgvCurrentCM.Rows[i].Cells[0].Value != null)
        {
            if ((int)dgvCurrentCM.Rows[i].Cells[0].Value != (int)dgvOldCM.Rows[i].Cells[0].Value)
            {
                dgvCurrentCM.Rows[i].DefaultCellStyle.ForeColor = Color.Red;
                dgvOldCM.Rows[i].DefaultCellStyle.ForeColor = Color.Red;
            }
        }
    }

关于c# - 根据两个数据表中的差异更改 datagridview 中的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15277891/

相关文章:

c# - Northwind Access 数据库的订单对象

c# - 如何计算数据库中列的字符长度并将它们放入 datagridview 中显示的新列中

c# - 向现有函数添加功能(C#、C++)

c# - 从不同项目访问 appsettings.json

c# - 当维度大于 1,1 时指定月历中的第一个月

c# - 使用SaveFileDialog选择一个文件夹

c# - 如何计算linq中的重复项?

c# - 我如何在 C# 的 mongodb 中通过 bsondocument 查询或查找

c# - 如何通过代码滚动面板?

c# - 如何在 DataGridViewCell 中设置字符串的方向?