C# 如何比较单独列中的两个单元格值并在DataGridView中突出显示差异

C# 如何比较单独列中的两个单元格值并在DataGridView中突出显示差异,c#,C#,我查了一下这个问题,看到有人问它比较行值,但我没有看到有人问我要做的关于列值的问题 下面是我在dataGridView中获得的一些数据的示例 2 2 2 2 1 1 1 1 1 2 1 1 2 2 2 1 1 2 2 2 我希望最后三行突出显示为有差异,因为这些列中并非所有的数字都匹配。如果有办法突出显示不匹配的特定数字,那就更好了 这与比较行值的方法相同吗?如果没有,我怎么做这个任务 我提到的关于行比较问题的帖子可以在中找到。下面的方法应该突出显示值

我查了一下这个问题,看到有人问它比较行值,但我没有看到有人问我要做的关于列值的问题

下面是我在dataGridView中获得的一些数据的示例

    2 2 2 2
    1 1 1 1
    1 2 1 1 
    2 2 2 1
    1 2 2 2
我希望最后三行突出显示为有差异,因为这些列中并非所有的数字都匹配。如果有办法突出显示不匹配的特定数字,那就更好了

这与比较行值的方法相同吗?如果没有,我怎么做这个任务


我提到的关于行比较问题的帖子可以在

中找到。下面的方法应该突出显示值不一致的每一行

    public void HighlightNonUniformRows()
    {
        foreach (DataGridViewRow r in excelView_DGV.Rows)
        {
            r.DefaultCellStyle.BackColor = Color.White; // set to default until non-uniform value is detected
            for (int i = 0; i < r.Cells.Count - 1; i++)
            {
                int j = i + 1;
                if (!r.Cells[i].Value.Equals(r.Cells[j].Value))
                {
                    r.DefaultCellStyle.BackColor = Color.Red; // or other desired highlight color
                    break;
                }
            }
        }
    }
public void highlightununiformrows()
{
foreach(ExcelViewdgV.Rows中的DataGridViewRow r)
{
r、 DefaultCellStyle.BackColor=Color.White;//设置为默认值,直到检测到不一致的值
对于(int i=0;i
您还提到“突出显示不匹配的特定数字”。假设给定行中最多有一个数字与其他数字不同(如示例数据中所示),可以使用下面修改的方法来完成此操作

    public void HighlightNonUniformRowCells()
    {
        foreach (DataGridViewRow r in excelView_DGV.Rows)
        {
            r.DefaultCellStyle.BackColor = Color.White; // set to default until non-uniform value is detected
            for (int i = 0; i < r.Cells.Count - 1; i++)
            {
                int j = i + 1;
                if (!r.Cells[i].Value.Equals(r.Cells[j].Value))
                {
                    if (i == 0 && r.Cells[j].Equals(r.Cells[j + 1])) r.Cells[i].Style.BackColor = Color.Red; // edge case - first cell contains the non-uniform value
                    else r.Cells[j].Style.BackColor = Color.Red;
                    break;
                }
            }
        }
    }
public void highlight非均匀行单元格()
{
foreach(ExcelViewdgV.Rows中的DataGridViewRow r)
{
r、 DefaultCellStyle.BackColor=Color.White;//设置为默认值,直到检测到不一致的值
对于(int i=0;i
这个问题需要澄清。你好像问了很多问题。您是否需要帮助使GUI元素显示您想要的内容?或者你需要关于重复值的算法检测的帮助吗?另外,我看到你做了一些研究,但是如果你能确切地说明你已经尝试了什么,什么对你不起作用,这可能会有帮助。@JamesHoux我需要关于检测的帮助。我尝试使用链接示例答案中的dataGridView1.SelectedRows.Rows,但将两行替换为列,但我的代码无法识别.Columns。我尝试使用相同的代码只是为了看看会发生什么,但它也无法识别其中的.行。谢谢你,这是我想要做的。出于好奇,如果一行中有多个不同的值,您会怎么做?假设有一行1 2 1,如果我们以该行中的第一个值为基础,如何标记该2?可以使用变量跟踪该行中的第一个值(即
int val=(int)r.Cells[0]。value
),然后使用类似于
HighlightUnformRowCells()的代码
方法高亮显示与该值不匹配的每个单元格(迭代每个单元格-将
r.Cells[j].Style.BackColor
属性设置为不包含与第一个值相同的每个单元格所需的高亮显示颜色)。