将DataGridView.SelectedRows集合捕获到静态DataGridViewRowsCollection

时间:2019-06-25 10:20:52

标签: vb.net

我有一个按钮,可以用来为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放入静态行集合中进行处理。

从逻辑上讲有意义吗?如果是这样,我该怎么办?如果没有,是否有更好的方法来实现这一目标?

0 个答案:

没有答案