将CheckBox值设置为选中

时间:2015-02-20 19:52:42

标签: c# checkbox

有些上下文,我在c#上仍然很新,但我一直在更新别人写的不完整的c#代码。我遇到过这个似乎给我一个错误的代码。

gblnEnableSSL = Convert.ToBoolean(Convert.ToInt32(Utils.GetSetting("Program", "Configuration", "SSL", "0")));

Utils.GetSetting("Program", "Configuration", "SSL", "0")目前返回字符串"false"

我发现删除Convert.ToInt32()可以解决我的问题。但是,我不相信有人只是添加了Convert.ToInt32()来破坏了代码。我检查了回购,并惊讶地发现同一行的前一个代码用于:

gblnEnableSSL = Utils.GetSetting("Program", "Configuration", "SSL", "0").ToUpper() == "TRUE";

这似乎也有效。选中复选框的值是使用chkEnableSSL.Value = gblnEnableSSL;

设置的

我的问题是使用bool值或字符串值设置值之间是否存在差异。另外,chkEnableSSL.valuechkEnableSSL.Checked之间的差异是什么?

编辑:我没有使用前面的代码获得编译器或运行时错误。之后它不会执行代码。例如,我之后立即txtDataSource.Text = strDataSource;除非我发表评论gblnEnableSSL = ...或删除Convert.ToInt32(),否则不会设置文字。

编辑: Convert.ToInt32()会抛出异常,但在VS中没有中断,因为我没有检查“公共语言运行时异常”。

1 个答案:

答案 0 :(得分:0)

看起来GetSetting正在返回一个字符串。您给出的第一个代码示例是将此字符串转换为整数,然后将其转换为布尔值。唯一可行的方法是,为该键存储的字符串值是0还是1.在第二个代码块上,它看起来好像所使用的值不是0或1的字符串值,而是实际字符串值为true或false 。如果存储在配置文件中的值仍然是true或false格式,那么这就是您的第一行中断的原因。您不能将false或true字符串转换为int。看起来有人刚刚添加了一些东西来破解代码。

此外,您没有提到您正在使用的技术。您可以使用winforms,wpf,webforms或MVC。我将假设这是你正在使用的网络技术,因为checbox.value是我通常在javascript中看到的东西。在javascript中设置复选框值的一般共识是使用.prop()属性,该属性将字符串作为要更改的属性,将值作为第二个参数。例如。

$( "input" ).prop( "checked", true );   

http://api.jquery.com/prop/

故事的道德是删除转换为int32并使用.prop()设置该复选框:)