问题

我正在存储一个checkbox的true / false状态.注册表中检查的值在下次加载表单时重置.

当表单加载时,我会获得该值并设置这样的复选框.

string value = (string)Registry.GetValue(@"HKEY_CURRENT_USER\Software\CompanyName\AddressLoad", "SpaceBetween1", null);
if (value != null)
{
    if (value == "True")
    {
        checkBox1.Checked = true;
    } Else {
        checkBox1.Checked = false;
    }
}

这是有效的,但我觉得这可能是一个更好的方式.

我尝试过这个

checkBox1.Checked = (Boolean)Registry.GetValue(@"HKEY_CURRENT_USER\Software\CompanyName\AddressLoad", "SpaceBetween1", null);

但是它给了我一个"指定的转换无效".错误.

该值正在REG_SZ存储在注册表中.不知道是否导致他发行.

在此输入图像说明

我已经搜索了如何解决这个问题,但是还没有找到这样的方式.

有没有更好的方法来将一个字符串值转换为布尔值,并将其分配给复选框?



解决方法

由于您从注册表中读取的值的类型是 string ,因此您无法转换.但是,您可以 转换 :

checkBox1.Checked = Convert.ToBoolean(
    Registry.GetValue(
        @"HKEY_CURRENT_USER\Software\CompanyName\AddressLoad"
    ,   "SpaceBetween1"
    ,   null
    )
);



相关问题推荐