0

我对 datagridview 中的 CellFormatting 事件有疑问。

每次我添加以下代码时,它都会运行得很慢。

disconnect()
connect()
cmd=New Odbc.OdbcCommand("SELECT idnum FROM tblmanhours GROUP BY idnum HAVING SUM (basic) > 48", con)
dr=cmd.ExecuteReader

While dr.Read
  If Me.dgvmanhours.Columns(e.ColumnIndex).HeaderText = "ID_No" Then
    If e.value = dr.GetString(o) Then
       e.CellStyle.BackColor = Color.Crimson
       e.CellStyle.ForeColor = Color.White
    End If
  End If
End While

我想做的是为查询返回的单元格着色。上述代码的输出是正确的,但每次我调试它时运行速度都很慢。每当我评论这些代码时,它运行得很快。

请帮我。

提前致谢。

4

2 回答 2

0

看起来每次更改的重绘都会减慢速度,所以这可能会有所帮助。

Me.dgvmanhours.SuspendLayout()
While dr.Read
   ...
End While
Me.dgvmanhours.ResumeLayout()
于 2013-11-20T09:38:06.813 回答
0

将查询结果缓存在 DataTable 中,然后从事件中查询本地数据表。

如果您所做的只是设置颜色,只需在每次数据更改时对 DGV(或行/单元格)进行一次传递。 dgv(10, 10).Style.BackColor = Color.Crimson

于 2013-11-20T16:30:50.400 回答