我有一个按钮,可以用来为DataGridView dgv
中的每个选定行更新特定列中的值。
我目前正在这样做:
Private Sub btn_Click(sender Object, e As EventArgs) Handles btn.Click
For Each row As DataGridViewRow in dgv.SelectedRows
row.Cells("ID").Value = "XYZ"
Next
End Sub
但是,当用户选择很多行时,这会挂起UI,直到完成为止。我希望在工作的同时保持UI的响应速度,并在完成时显示每行的更改(而此时,UI更新最后一次全部发生)。
我的想法是使用Task.Run()
:
Private Sub btn_Click(sender Object, e As EventArgs) Handles btn.Click
Task.Run(Sub() SetValue(CurrentDGV.SelectedRows, "XYZ"))
End Sub
Private Sub SetValue(ByVal rows As DataGridViewSelectedRowCollection, ByVal State As String)
For Each row As DataGridViewRow in rows
row.Cells("ID").Value = State
Next
End Sub
这将一直有效,直到用户更改.SelectedRows
集合为止(因为UI现在允许这样做了)。
我要做的是单击按钮时将.SelectedRows
放入静态行集合中进行处理。
从逻辑上讲有意义吗?如果是这样,我该怎么办?如果没有,是否有更好的方法来实现这一目标?