2014-11-23 2 views
0

Я попытался загрузить флажок из текстового файла в VB.NET в качестве части формы настроек для моего приложения. Я использовал этот кусок кода:Флажок 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» или «false». Вместо этого код обнаруживает его как «ни true, ни false», и отправляет сообщение «ERROR!», Которое я добавил в приложение, чтобы проверить, действительно ли он прочитал файл.

+2

установить точку останова и отлаживать его; также, если есть только одна настройка, рассмотрите вопрос о 'My.Settings' – Plutonix

ответ

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 
0

Вы можете сократить весь свой код этой

Для загрузки:

CheckBox1.Checked = Convert.ToBoolean(System.IO.File.ReadAllText("FILE_PATH")) 

Для сохранения

IO.File.WriteAllText("FILE_PATH", Convert.ToString(CheckBox1.Checked)) 
Смежные вопросы