我有一个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)
如果我注释掉该代码,则不会绘制单元格。如果我保留该代码,单元将被绘制。我知道自己设置的值没有任何作用,我只是用它来设置一个断点。但是,如果我取消断点,但保留代码;有用。我对到底发生了什么感到困惑...
有人有什么想法吗?
答案 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)
结果证明一切正常。我重新启动计算机,并在没有“调试代码”的情况下重新运行了该项目,它运行良好。操作系统中肯定有引起问题的东西。