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 (または行/セル) を 1 回パスするだけです。 dgv(10, 10).Style.BackColor = Color.Crimson

于 2013-11-20T16:30:50.400 に答える