【发布时间】:2018-05-24 17:51:03
【问题描述】:
我正在尝试恢复 2 个复选框的状态。 这两个复选框我让它们作为 radiobuttun 工作:一个被选中,另一个被取消选中。
我有一个用于程序配置的外部文件,我希望每次退出程序时,所有内容都保存在这个文件中。
为此,我使用以下代码:
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被选中而不是checkbox2?
谢谢
【问题讨论】:
-
如果
CheckBoxes像RadioButtons一样被使用,那么你为什么不使用RadioButtons?另外,如果状态总是相反,为什么需要保存两个值? -
嗨。感谢你及时的答复。我没有使用单选按钮,因为在这种情况下它们让我的生活变得复杂。
-
RadioButtons并不复杂。如果您想要它们提供的行为,我可以看到您不会使用它们的唯一原因是如果您想要不同父控件上的两个控件。只有具有相同父级的RadioButtons作为一个组。当然,如果这就是原因,那么当我问你为什么不使用它们时,你可能应该这么说。 -
第二个代码 sn-p 相当糟糕。我不确定你为什么不像在第一个 sn-p 中那样打电话给
File.ReadAllLines。这很可能会将事情简化到您不会犯错误的程度。 -
对不起,我的评论在我完成之前就开始了嗨。感谢你及时的答复。我没有使用单选按钮,因为在这种情况下它们让我的生活变得复杂。该程序是多语言的。有几个语言文件,用户也可以创建和翻译自己的语言,所以必须保存 2 个值,因为我个人没有找到替代方案,因为我的经验有限。如果您有任何建议,那就太好了。再次感谢您的帮助:)