保存并加载单选按钮的值不起作用c#
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了保存并加载单选按钮的值不起作用c#相关的知识,希望对你有一定的参考价值。
我正在用C#编写一个软件,我在其中使用regedit来存储用户的一些偏好。其中一个偏好是:检查哪个单选按钮。这就是它的样子:
String readPreference = (String)Registry.GetValue(RegLocation, "Preference", "true;false");
var temp = readPreference.Split(new string[] { ";" }, StringSplitOptions.None);
radioButton1.Checked = bool.TryParse(temp[0], out tempBool);
radioButton2.Checked = bool.TryParse(temp[1], out tempBool);
但无论temp [0]和temp [1]的值如何,RadioButton1.Checked
将永远变为虚假,而RadioButton2.Checked
将永远变为真。
以下是两种可能的情况,第一种情况:
temp[0] = false;
temps[1] = true;
radioButton1.Checked = temp[0] //it's supposed to become false but it stays true
radioButton2.Checked = temp[1] //it becomes true
所以radioButton1.Checked
变得虚假,radioButton2.Checked
保持真实。
第二个:
temp[0] = true;
temps[1] = false;
radioButton1.Checked = temp[0] //it becomes true
radioButton2.Checked = temp[1] //it becomes false
然后,radioButton1.Checked
变得虚假,radioButton2.Checked
变为真实
这怎么可能,如何解决?
答案
我认为问题出现在以下代码中 -
radioButton1.Checked = bool.TryParse(temp[0], out tempBool);
radioButton2.Checked = bool.TryParse(temp[1], out tempBool);
如果能够成功地将第一个参数解析为bool值,bool.TryParse
将始终返回true。你需要做的是。
bool tempBool_1 = false, tempBool_2 = false;
if(bool.TryParse(temp[0], out tempBool_1))
{
radioButton1.Checked = tempBool_1;
}
else
{
// handle parsing error.
}
if(bool.TryParse(temp[0], out tempBool_2))
{
radioButton2.Checked = bool.TryParse(temp[1], out tempBool_2);
}
else
{
// handle parsing error.
}
以上是关于保存并加载单选按钮的值不起作用c#的主要内容,如果未能解决你的问题,请参考以下文章
当指针指向数组时,为啥 operator(*) 的值不起作用?