我尝试从VB.NET中的文本文件中加载一个复选框,作为我的应用程序的设置表单的一部分。我使用了这段代码:
Sub loadfiles()
Dim read As System.IO.StreamReader
read = My.Computer.FileSystem.OpenTextFileReader("C:\Users\Public\Documents\procrastinGONEnotif.txt")
Dim text As String = read.ReadToEnd()
read.Close()
If text = "false" Then
CheckBox1.Checked = False
Else
If text = "true" Then
CheckBox1.Checked = True
Else
MessageBox.Show("ERROR!")
End If
End If
End Sub
文件保存代码就在这里:
Dim write As System.IO.StreamWriter
write = My.Computer.FileSystem.OpenTextFileWriter("C:\Users\Public\Documents\procrastinGONEnotif.txt", False)
If CheckBox1.Checked = True Then
write.WriteLine("true")
Else
write.WriteLine("false")
End If
write.Close()
文件应该在表单启动时加载,并在按下按钮时保存。但是,表单不会加载文件,即使它存在并包含" true"或"假"。相反,代码将其检测为"既不是真的也不是假的。并发送消息" ERROR!",我将其添加到应用程序中以测试它是否实际读取该文件。
答案 0 :(得分:0)
问题是当您读取/写入值false
时。输出文件中false
后面有换行符,当您打开文本文件或最初将其读入text
时,该换行符可见。一个简单的解决方案是简单地使用read.ReadToEnd().Trim()
删除额外的空白字符。
您还可以将嵌套的If...Else
合并到If...ElseIf...Else
中,以减少您的代码混淆。
Sub loadfiles()
Dim read As System.IO.StreamReader
read = My.Computer.FileSystem.OpenTextFileReader("C:\Users\Public\Documents\procrastinGONEnotif.txt")
Dim text As String = read.ReadToEnd().Trim()
read.Close()
If text = "false" Then
CheckBox1.Checked = False
ElseIf text = "true" Then
CheckBox1.Checked = True
Else
MessageBox.Show("ERROR!")
End If
End Sub
答案 1 :(得分:0)
您可以将整个代码缩短到此
加载:
CheckBox1.Checked = Convert.ToBoolean(System.IO.File.ReadAllText("FILE_PATH"))
保存
IO.File.WriteAllText("FILE_PATH", Convert.ToString(CheckBox1.Checked))