我正在尝试恢复2个复选框的状态。 这两个复选框我让它们作为radiobuttun工作:当一个被选中时,另一个被取消选中。
我有一个用于配置程序的外部文件,我希望退出程序的evrytime,所有内容都保存在此文件中。
为此,我使用此代码:
Private Sub Form1_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
Dim thefile As String = Application.StartupPath & "\SafetyBox.cfg"
Dim lines() As String = System.IO.File.ReadAllLines(thefile)
lines(1) = "Language_file=" & ComboBox1.Text
If CheckBox1.Checked = True Then
lines(2) = "Status1=" & "1"
Else
lines(2) = "Status1=" & "0"
End If
If CheckBox2.Checked = True Then
lines(3) = "Status2=" & "1"
Else
lines(3) = "Status2=" & "0"
End If
System.IO.File.WriteAllLines(thefile, lines)
End Sub`
这部分工作得很好。 Status1应为checkbox1的状态,而status2为checkbox2的状态。
无效的代码是:
Dim path As String = Application.StartupPath & "\SafetyBox.cfg"
If File.Exists(path) Then
Using sr As StreamReader = New StreamReader(path)
Dim linenew As String = sr.ReadLine()
If linenew.Contains("\") Then
TextBox1.Text = linenew
Else
MsgBox("Configura il programma da usare")
End If
Dim lineN As String = sr.ReadLine()
If lineN.Contains("Language_file=") Then
ComboBox1.Text = lineN.Split("=").Last()
End If
If lineN.Contains("Status1=1") Then
CheckBox1.Checked = True
CheckBox2.Checked = False
ElseIf lineN.contains("Status1=0") Then
CheckBox1.Checked = False
CheckBox2.Checked = True
End If
If lineN.Contains("Status2=1") Then
CheckBox1.Checked = False
CheckBox2.Checked = True
ElseIf lineN.Contains("Status2=0") Then
CheckBox1.Checked = True
CheckBox2.Checked = False
End If
sr.ReadToEnd()
sr.Close()
End Using
你能不能让我知道我的错误在哪里?为什么在.cfg文件中正确写入时Status1 = 0且Status2 = 1,加载程序时我总是看到checkbox1 checkd而不是checkbox2?
谢谢
答案 0 :(得分:0)
您写道,您CheckBoxes
的工作时间为RadionButtons
。我怀疑为了做到这一点,你处理了CheckedChanged
和CheckStateChanged
中的一个或两个事件。
因此,当更改CheckState时,会相应地设置或取消设置其他复选框。
从文件加载表单的配置/状态时,您将在CheckBoxes上设置值,然后导致触发事件。要防止事件被触发,您应该暂时从复选框控件中删除事件处理程序。
在方法开头添加行以加载配置:
RemoveHandler Checkbox1.CheckStateChanged, AddressOf Checkbox1_CheckStateChanged
RemoveHandler Checkbox2.CheckStateChanged, AddressOf Checkbox2_CheckStateChanged
并且,在方法结束时,您需要使用以下命令重新建立事件处理程序:
AddHandler Checkbox1.CheckStateChanged, AddressOf Checkbox1_CheckStateChanged
AddHandler Checkbox2.CheckStateChanged, AddressOf Checkbox2_CheckStateChanged
如果这是问题所在,当表单有多个响应xxxChanged
事件的事件处理程序时,遇到的问题是一个常见的问题。