0

データテーブルの行を選択できるようにする機能があり、選択した行を追跡します。ただし、他のデータテーブルを返すと、選択した行が逆に入力されます。

したがって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

行が逆にならないようにするには、どうすればよいのだろうと思っていました。

4

2 に答える 2