我正试图通过单击两次来打开一个已经添加到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