我是新手,我在使用visual basic的'if'和'else'功能时遇到了一些问题。 我添加了一个标记为Save的按钮,其代码如下:
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
If CheckBox1.Checked = True Then
Dim savedata7 As New System.IO.StreamWriter("dat0C.bin")
savedata7.WriteLine("checked")
savedata7.Close()
End If
If CheckBox1.Checked = False Then
Dim savedata7 As New System.IO.StreamWriter("dat0C.bin")
savedata7.WriteLine("unchecked")
savedata7.Close()
End If
If CheckBox2.Checked = True Then
Dim savedata8 As New System.IO.StreamWriter("dat1C.bin")
savedata8.WriteLine("checked")
savedata8.Close()
End If
If CheckBox2.Checked = False Then
Dim savedata8 As New System.IO.StreamWriter("dat1C.bin")
savedata8.WriteLine("unchecked")
savedata8.Close()
End If
End Sub
另一个标记为Load的按钮,其代码如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim dataloader As New System.IO.StreamReader("dat0C.bin")
Label17.Text = dataloader.ReadToEnd
dataloader.Close()
Catch ex As Exception
End Try
Try
Dim dataloader As New System.IO.StreamReader("dat1C.bin")
label10.Text = dataloader.ReadToEnd
dataloader.Close()
Catch ex As Exception
End Try
If Label17.Text = "checked" Then
CheckBox1.Checked = True
Else
CheckBox1.Checked = False
End If
If Label10.Text = "checked" Then
CheckBox2.Checked = True
Else
CheckBox1.Checked = False
End If
End Sub
“保存”按钮(Button5)工作正常,但“加载”按钮(Button1)无法正常工作,单击Button1时,文件“dat0C.bin”和“dat1c.bin”将加载到“Label17”中和'Label10'分别但它不起作用(即它不是检查CheckBoxes1或2)
If Label17.Text = "checked" Then
CheckBox1.Checked = True
Else
CheckBox1.Checked = False
End If
If Label10.Text = "checked" Then
CheckBox2.Checked = True
Else
CheckBox1.Checked = False
End If
请纠正我,如果我做错了什么。
答案 0 :(得分:1)
这是因为在阅读代码中您使用ReadToEnd而不是ReadLine 此方法读回由WriteLine添加的换行符,并且不会将其作为ReadLine
删除Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Using dataloader = New System.IO.StreamReader("dat0C.bin")
Label17.Text = dataloader.ReadLine()
End Using
Catch ex As Exception
MessageBox.Show("Exception=" & ex.Message)
End Try
....
你应该把这个一次性对象的创建放在一个using语句中,以确保这些对象在异常的情况下被正确关闭和处理。
如果您使用File类的静态方法
,那么您的代码可以简化很多书写
File.WriteAllText("dat0C.bin", If(CheckBox1.Checked, "checked", "unchecked"))
File.WriteAllText("dat1C.bin", If(CheckBox2.Checked, "checked", "unchecked"))
阅读
Label17.Text = File.ReadAllText("dat0C.bin")
Label10.Text = File.ReadAllText("dat1C.bin")
CheckBox1.Checked = (Label17.Text = "checked")
CheckBox2.Checked = (Label10.Text = "checked")
答案 1 :(得分:1)
请注意,不要命名您的控件,也不要正确处理StreamReader
或StreamWriter
个实例,因为这样做不正确是因为当您编写文件时,请拨打WriteLine
- 它会在您所写的内容的末尾添加回车符和换行符。
然后您阅读该文件,并将内容放入标签中,该标签本身将呈现CR / LF,尽管您不可见。然后,您将与此标签的Text
进行比较,但不使用CR / LF,以便比较评估为false。