参数'Expression'无法转换为'DataGridViewRow'类型

时间:2013-06-25 13:35:59

标签: vb.net argumentexception

我收到此错误:Argument 'Expression' cannot be converted to type 'DataGridViewRow'.我不知道它意味着什么或如何修复它,它发生在这一行:

dt2.Rows(Val(selectedItem))("Position") = dt.Rows(selectedItem.Cells(1).Value)("Mouse Position")

有人可以解释一下错误是什么以及如何修复它?

    Try

        If selectedItems Is Nothing Then
            For n = 0 To dt.Rows.Count - 1
                dt2.Rows.Add(n)
                dt2.Rows(n)("Position") = dt.Rows.Item(n)("Mouse Position")
            Next

        Else

            For Each selectedItem As DataGridViewRow In selectedItems


                dt2.Rows.Add(selectedItem)
                dt2.Rows(Val(selectedItem))("Position") = dt.Rows(selectedItem.Cells(1).Value)("Mouse Position")

            Next
        End If

    Catch ex As Exception
        MsgBox("Error", MsgBoxStyle.Exclamation, "Error!")
    End Try

1 个答案:

答案 0 :(得分:1)

我必须先查看您之前的问题才能理解您的问题 变量dt2是一个只有一列名为“Position”的DataTable,因此将DataGridViewRow添加到此DataTable的DataRow集合是没有意义的。

你的第一个循环应该是

For n = 0 To dt.Rows.Count - 1
    Dim r = dt2.NewRow();
    r("Position") = dt.Rows.Item(n)("Mouse Position")
    dt2.Rows.Add(r)
Next

而第二个循环

For Each selectedItem As DataGridViewRow In selectedItems
    Dim r = dt2.NewRow()
    r("Position") = dt.Rows(selectedItem.Cells(1).Value.ToString)("Mouse Position")
    dt2.Rows.Add(r)
Next