データテーブルの行を選択できるようにする機能があり、選択した行を追跡します。ただし、他のデータテーブルを返すと、選択した行が逆に入力されます。
したがって1,2,3
、データテーブルを返すときに行を選択すると、行は次のように表示され3,2,1
ます。関数は次のとおりです。
Private Function getCoordinates()
Dim dt As New DataTable
Dim dt2 As New DataTable
Dim r As DataRow
Dim n As Integer
Dim selectedItems As DataGridViewSelectedRowCollection = dgv.SelectedRows
dt = dgv.DataSource
dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect
dgv.MultiSelect = True
dt2.Columns.Add("Command")
dt2.Columns.Add("Position")
Try
If selectedItems Is Nothing Then
For n = 0 To dt.Rows.Count - 1
r("Command") = dt.Rows.Item(n)("Mouse Command")
r("Position") = dt.Rows.Item(n)("Mouse Position")
dt2.Rows.Add(r)
Next
Else
For Each selectedItem As DataGridViewRow In selectedItems
Dim MouseIndex = Convert.ToString(selectedItem.Cells(0).Value)
Dim CoordIndex = Convert.ToString(selectedItem.Cells(1).Value)
r = dt2.NewRow()
r("Command") = MouseIndex
r("Position") = CoordIndex
dt2.Rows.Add(r)
Next
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
Return dt2
End Function
行が逆にならないようにするには、どうすればよいのだろうと思っていました。