错误系统无效投射异常:"从字符串" "转换为类型 'Integer' 无效。



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

System.InvalidCastException:"从字符串转换";Book1.csv";类型"Integer"无效

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加载了文件名,并且这些文件位于代码运行的目录中。您可以在即时窗口中看到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

最新更新