VB.NET双击TreeView节点加载CSV到DataGridView报InvalidCastException错误如何解决
报错根因定位
你触发的类型转换错误完全来自这行代码:
Dim Direccion As String = My.Computer.FileSystem.CurrentDirectory(NombreNodo)
My.Computer.FileSystem.CurrentDirectory是只读字符串属性,作用仅为返回当前程序的工作目录路径,本身不是可传入文件名拼接路径的方法。
当你给该属性后加括号传入字符串类型的文件名时,VB会默认把CurrentDirectory返回的字符串当作字符数组,尝试按索引取对应位置的字符,索引要求传入Integer类型参数,你传入的是字符串类型的文件名,因此触发Conversion from string "Book1.csv" to type 'Integer' is not valid报错。
修复方案
如果你的CSV文件存放在当前程序工作目录下,使用Path.Combine方法拼接目录和文件名即可,替换对应行代码为:
Dim Direccion As String = Path.Combine(My.Computer.FileSystem.CurrentDirectory, NombreNodo)
额外优化建议
- 读取文件前增加文件存在判断,避免文件不存在触发新异常:
If Not File.Exists(Direccion) Then MessageBox.Show("目标文件不存在") Exit Sub End If Using代码块会在执行结束后自动释放包裹的资源,不需要手动调用TestReader.Close()和FileSystem.Close(),可删除这两行冗余代码。
内容的提问来源于stack exchange,提问作者bravazq
相关产品推荐
相关产品推荐

