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(

如果我把代码注释掉,单元格就不会被绘制。如果我把代码留在里面,单元格就会被涂上油漆。我知道设定价值本身并没有什么作用,我只是用它来设定一个临界点。但是,如果我去掉断点,但保留代码;它是有效的。我对到底发生了什么感到困惑…

有人有什么想法吗?

我认为,如果您将行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]上的BackColor未按要求设置。

@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");

这次你不会看到任何弹出的

IMHO你应该总是使用大括号,即使是"一行">

发现它运行正常。我重新启动了我的计算机,并在没有"调试代码"的情况下重新运行了项目,它运行得很好。操作系统中一定有什么东西导致了问题。

最新更新