保存并加载单选按钮的值不起作用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(*) 的值不起作用?

.click() 在单选按钮上不起作用

使用单选按钮状态选择和选择加载时,身体负载的主题转换器不起作用?

动态单选按钮单选组和视图不起作用

使用javascript获取选中的单选按钮的值[重复]

C# WPF:当单选按钮显示为图像时,数据网格中的单选按钮分组不起作用