我看了一个视频教程,看到那个人编写并执行下面的代码并且工作但是当我尝试编译我的时,它说“对象引用未设置为对象的实例”。我已经尝试了几件事,看看我能解决问题但无济于事。
Imports System.IO
Public Class Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim myline = New StreamReader("TextFile1.txt")
Dim line As String = ""
While Not IsNothing(line)
line = myline.ReadLine
If IsNothing(line) Then
TextBox2.AppendText(line)
End If
End While
myline.Close()
Catch ex As Exception
TextBox2.AppendText(ex.Message)
MsgBox(ex.Message)
End Try
End Sub
End Class
任何人都可以帮忙吗?感谢
答案 0 :(得分:3)
我认为你错过了不:
If Not IsNothing(line) Then
TextBox2.AppendText(line)
End If
答案 1 :(得分:2)
this kind of "If Not IsNothing:" is strange kind of.
IsNothing
是一个VB-ism而不是.NET语法。其他编码方式包括:
If String(line).IsNullOrEmpty = False Then
' or
If Not String(line).IsNullOrEmpty Then
' which is the same type of garble as Not IsNothing
also:
If Line IsNot Nothing Then
由于IsNothing
是一个返回布尔值的VB函数,你也可以只评估它:
If IsNothing(line) = False Then ...
答案 2 :(得分:1)
在条件If IsNothing(line) Then
中,您错过了Not
。
If Not IsNothing(line) Then
TextBox2.AppendText(line)
End If
答案 3 :(得分:0)
嗯,这很简单:)只是缺少你的对象定义:)
Dim myline = New StreamReader("TextFile1.txt")
-doesnt定义myline。这就像你这样做:
Dim variable = 1
你必须说:
Dim myline as StreamReader = New StreamReader("TextFile1.txt")
因此,在使用值填充之前,Visual Basic会知道您正在创建哪种变量。在VB.NET中有更好,更敏锐的方式读取文件(我个人最喜欢的语言:)),但我相信这对你的应用程序有用。
如果您最终想要将整个文件读取到数组(列表),则可以查看片段以查找将文件读取到字符串的代码,然后使用anystring.split命令将其拆分为列表“vbCRLF”字符(一个结束线,就像你的输入按钮一样)。
答案 4 :(得分:0)
似乎只是调用ReadAllText方法会更容易:
Imports System.IO
Public Class Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
TextBox2.AppendText(File.ReadAllText("TextFile1.txt"))
Catch ex As Exception
TextBox2.AppendText(ex.Message)
MsgBox(ex.Message)
End Try
End Sub
End Class