DataGridView的初始加载速度非常快,顺序刷新速度非常慢(VB.NET)



所以我有一个DataGridView视图表单,它最初加载超高速,但当我刷新时,它需要很长时间才能填充。你可以看到正在绘制的每一行。网格大约有1000条线。

加载表单时,它会调用refreshPendingsGrid((。当用户双击DataGridView中的任何记录时,它会再次调用相同的refreshPendingsGrid((函数。是什么原因导致DataGridView的刷新速度比初始加载慢10倍?

谢谢。

Private Sub frmReviewPendings_Load(sender As Object, e As EventArgs) Handles MyBase.Load
refreshPendingsGrid()
End Sub

Private Function refreshPendingsGrid()
DoubleBuffer.DoubleBuffered(dgvPendings, True)
dgvPendings.Rows.Clear()
dgvPendings.AllowUserToAddRows = False
dgvPendings.AllowUserToDeleteRows = False
dgvPendings.DefaultCellStyle.WrapMode = DataGridViewTriState.True
dgvPendings.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing
If RS.EOF And RS.BOF Then
'there are no rows to add
If Not (RS Is Nothing) Then RS.Close()
RS = Nothing
If Not (DB Is Nothing) Then DB.Close()
DB = Nothing
Return 1
Else
'loop through all the rows and add them to the table
RS.MoveFirst()
dgvPendings.RowCount = RS.RecordCount
y = 0
Do Until RS.EOF
Application.DoEvents()
dgvPendings.Rows.Item(y).Cells("xxxxxxxx").Value = IIf(IsDBNull(RS.Fields("xxxxxxxx").Value), "", RS.Fields("xxxxxxxx").Value)
dgvPendings.Rows.Item(y).Cells("xxxxxxxx").Value = IIf(IsDBNull(RS.Fields("xxxxxxxx").Value), "", RS.Fields("xxxxxxxx").Value)
dgvPendings.Rows.Item(y).Cells("xxxxxxxx").Value = IIf(IsDBNull(RS.Fields("xxxxxxxx").Value), "", RS.Fields("xxxxxxxx").Value)
dgvPendings.Rows.Item(y).Cells("xxxxxxxx").Value = IIf(IsDBNull(RS.Fields("xxxxxxxx").Value), "", RS.Fields("xxxxxxxx").Value)
dgvPendings.Rows.Item(y).Cells("xxxxxxxx").Value = IIf(IsDBNull(RS.Fields("xxxxxxxx").Value), "", RS.Fields("xxxxxxxx").Value)
RS.MoveNext()
If Not dgvPendings.RowCount = RS.RecordCount Then
dgvPendings.RowCount = dgvPendings.RowCount + 1
End If
y = y + 1
Loop
End If
End Function

Private Sub dgvPendings_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvPendings.CellDoubleClick
refreshPendingsGrid()
End Sub

通过注释Application.DoEvents((来解决问题

最新更新