将CheckBox.Checked状态设置为True - “输入字符串未处于正确格式”

时间:2017-06-02 10:54:22

标签: vb.net checkbox boolean

我在MS-Access数据库中保存了一个布尔变量,(虽然有趣的是,当我以编程方式添加它时,它在数据库中显示为0或-1,而不是一个复选框?),并且在加载时将数据转换成表格,我有以下代码:

cbNoCharge.Checked = Convert.ToBoolean(fTable.Rows(0).Item("freeDelivery"))

然而,这是错误的,说

  

输入字符串的格式不正确

这令我感到困惑?尽管最初的DB值仍然是一个布尔值,但我将其转换为一个只是为了确保它。为什么“True”或“False”的值不能作为布尔值使用?

我也试过它

If fTable.Rows(0).Item("freeDelivery") = True Then
    cbNoCharge.Checked = True
End If

但同样的事情发生了?地球上到底发生了什么?!

编辑

我添加了以下行作为测试:

Dim bFree As Boolean = fTable.Rows(0).Item("freeDelivery")

其中接受 exact 相同的字段为boolean fine。所以,我接着尝试了

cbNoCharge.Checked = bFree

错误再次发生。

编辑2

在遵循@VisualVincent的建议后,我在他的代码中添加了检查值实际上是True还是False - 如此处所示,它是True。

enter image description here

2 个答案:

答案 0 :(得分:0)

如果是文本框字段,则应该在字段中输入Y或N.没有告诉它被检查或没有检查。仅在数据库表上检查是通过显示而不是实际数据的表示。如果是访问中的复选框,则输入"Y" AS STRING,然后选中该复选框。

或者您可以使用1或0,1 =已选中,0 =未选中。

答案 1 :(得分:0)

错误即将发生,因为CheckedChanged的{​​{1}}事件触发了另一种方法,错误发生在该方法中,而不是CheckBox本身。

更深入,更彻底的调试让我找到了这个。