Datagridview画图问题

时间:2018-11-21 04:17:04

标签: c# winforms

我有一个datagridview,用于处理数据表中的数据。然后在有问题的字段上更改颜色。我通过ProgressChanged事件来做到这一点。这是代码:

    private void bgwCompare_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        ReportRow rr = (ReportRow)e.UserState;
        if (rr.nRow == 1 && rr.nColumn == 2)
            rr.nColumn = 2;  // If I leave this in it works, if I remove it the single cell is not colored
        if (rr.nColumn == -1)
            dgvResults.Rows[rr.nRow].DefaultCellStyle.BackColor = Color.Yellow;
        else
            dgvResults.Rows[rr.nRow].Cells[rr.nColumn].Style.BackColor = Color.Salmon;


    }

这变得...真的很奇怪...我似乎只对超过1000条记录中的一个单元有问题。

如果我尝试观看单元格设置,它会起作用。 (请参见上面的代码rr.nRow == 1 && rr.nColumn == 2)

如果我注释掉该代码,则不会绘制单元格。如果我保留该代码,单元将被绘制。我知道自己设置的值没有任何作用,我只是用它来设置一个断点。但是,如果我取消断点,但保留代码;有用。我对到底发生了什么感到困惑...

有人有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我认为,如果您将行rr.nColumn = 2注释掉,代码将被解释为

if (rr.nRow == 1 && rr.nColumn == 2)
{
    if (rr.nColumn == -1)
        dgvResults.Rows[rr.nRow].DefaultCellStyle.BackColor = Color.Yellow;
    else
        dgvResults.Rows[rr.nRow].Cells[rr.nColumn].Style.BackColor = Color.Salmon;
}

,然后未根据需要设置[1,2]上的背景色。

@DaBlue,正如您在评论中所说的那样,我的代码不会像这样解释,请尝试以下操作

if (false)
    MessageBox.Show("1");  // If I leave this in it works, if I remove it the single cell is not colored
if (true)
    MessageBox.Show("2");
else
    MessageBox.Show("3");

在这种情况下,将显示“ 2”,然后尝试以下代码

if (false)
    //MessageBox.Show("1");  // If I leave this in it works, if I remove it the single cell is not colored
if (true)
    MessageBox.Show("2");
else
    MessageBox.Show("3");

这次您不会看到任何弹出窗口

恕我直言,即使它是“单线”,也应始终使用大括号

答案 1 :(得分:0)

结果证明一切正常。我重新启动计算机,并在没有“调试代码”的情况下重新运行了该项目,它运行良好。操作系统中肯定有引起问题的东西。