错误 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
我正在尝试打开一个文件,我已通过单击它两次将其添加到我的 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