Vb.net 正在设置复选框。选中状态为True-“;输入字符串的格式不正确";

Vb.net 正在设置复选框。选中状态为True-“;输入字符串的格式不正确";,vb.net,checkbox,boolean,Vb.net,Checkbox,Boolean,我正在MS Access数据库中保存一个布尔变量(尽管有趣的是,当我以编程方式添加它时,它在DB中显示为0或-1,而不是勾选框?),并且在将数据加载到表单中时,我有以下代码: cbNoCharge.Checked = Convert.ToBoolean(fTable.Rows(0).Item("freeDelivery")) 然而,这是一个错误 输入字符串的格式不正确 这让我困惑?尽管初始DB值是一个布尔值,但我还是将其转换为一,以确保其正确性。为什么“True”或“False”的值不能作为布

我正在MS Access数据库中保存一个布尔变量(尽管有趣的是,当我以编程方式添加它时,它在DB中显示为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")
它接受与布尔fine完全相同的字段。于是,我试着

cbNoCharge.Checked = bFree
错误再次发生

编辑2

在遵循@VisualIncent的建议后,我在他的代码中添加了检查值是否为真的值,或者是否为假的值——如这里所示,这是真的


如果是文本框字段,则应在该字段中输入Y或N。不告诉它要检查还是不检查。仅在数据库表上检查是通过显示的表示,而不是实际数据。如果它是access中的一个复选框,则输入
“Y”
作为字符串,然后它应该选中该框


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

出现错误是因为
复选框的
CheckedChanged
事件触发了另一个方法,并且错误在该方法中,而不是
复选框本身


通过更深入、更彻底的调试,我发现了这一点。

初始值是从
cbNoCharge保存的。选中了
,因此
复选框本身正在设置布尔值,然后在加载数据时,它无法返回到相同的布尔值。您需要将ACCESS数据库中的字段设置为勾选框字段??您已经这样做了吗?为您的值创建一个变量:
Dim bFree As Object=fTable.Rows(0).Item(“freeDelivery”)
然后检查它以查看它实际包含的内容:
MessageBox.Show(bFree.ToString())
,然后在此处发布结果。通过这样做,您将能够看到它实际上是
True
还是
False
,或者它是否是一个完全不同的值。@VisualIncent是的,请参见编辑。这是真的。