错误 System.InvalidCastException:“从字符串“”到类型 'Integer' 的转换无效。”

Error System.InvalidCastException: 'Conversion from string "" to type 'Integer' is not valid.'

我正在尝试打开一个文件,我已通过单击它两次将其添加到我的 TreeView 控件中,它应该出现在 DataGridView 控件中,当我这样做时,它会显示下一个错误:

System.InvalidCastException: 'Conversion from string "Book1.csv" to type 'Integer' is not valid.'

Direccion 变量处,我不太确定发生了什么。有人可以指导我吗?请。

Public Sub TV_NodeMouseDoubleClick(ByVal sender As Object, ByVal e As 
TreeNodeMouseClickEventArgs) Handles TV.NodeMouseDoubleClick

        Dim NombreNodo As String = TV.SelectedNode.Text

        Dim parseCSV As String

        Dim tstSeq() As String

        Dim Direccion As String = My.Computer.FileSystem.CurrentDirectory(NombreNodo)

        'Dim x As String = Path.GetFullPath(NombreNodo)

        'MessageBox.Show(Direccion)

        tstSeqDataGrid.Rows.Clear()

        Using FileSystem As FileStream = File.Open(Direccion, FileMode.Open, FileAccess.Read)
            Dim TestReader As New System.IO.StreamReader(FileSystem)

            Do While TestReader.Peek <> -1
                parseCSV = TestReader.ReadLine()
                tstSeq = parseCSV.Split(",")
                tstSeqDataGrid.Rows.Add(tstSeq)
                TstSequenceLoaded = True
            Loop

            TestReader.Close()
            FileSystem.Close()
        End Using

    End Sub

我假设 TreeView 加载了文件名并且这些文件位于代码为 运行 的目录中。可以在Immediate Window中看到Direccion的值。使用 Debug.Print 代替消息框可以避免在生产代码中忘记删除消息框的尴尬。 Debug.Print 将被删除。

我用 ReadAllLines 返回了文件中的行数组。然后像你一样循环遍历这些行。

使用 Option Strict On(应该如此),您需要在 "," 之后添加小写字母 c,以便编译器知道您打算将其作为 Char 而不是 String.

Public Sub TV_NodeMouseDoubleClick(sender As Object, e As TreeNodeMouseClickEventArgs) Handles TV.NodeMouseDoubleClick
    Dim Direccion = My.Computer.FileSystem.CurrentDirectory & TV.SelectedNode.Text
    Debug.Print(Direccion)
    tstSeqDataGrid.Rows.Clear()
    Dim lines = File.ReadAllLines(Direccion)
    For Each line In lines
        Dim tstSeq = line.Split(","c)
        tstSeqDataGrid.Rows.Add(tstSeq)
    Next
    TstSequenceLoaded = True
End Sub