【问题标题】:Setting CheckBox.Checked state to True - "Input String was not in Correct Format"将 CheckBox.Checked 状态设置为 True - “输入字符串格式不正确”
【发布时间】:2017-06-02 21:23:13
【问题描述】:

我在 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 与布尔值相同的字段。所以,我然后尝试了

cbNoCharge.Checked = bFree

然后错误再次发生。

编辑 2

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

【问题讨论】:

  • 为您的值创建一个变量:Dim bFree As Object = fTable.Rows(0).Item("freeDelivery"),然后检查它以查看它实际包含的内容:MessageBox.Show(bFree.ToString()),然后在此处发布结果。通过这样做,您将能够看到它实际上是 True 还是False,或者它是否是一个完全不同的值。
  • @VisualVincent 是的,请参阅编辑。这是真的。

标签: vb.net checkbox boolean


【解决方案1】:

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

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

【讨论】:

  • 初始值是从cbNoCharge.Checked保存的,所以CheckBox自己设置了布尔值,然后在重新加载数据时,它无法返回到相同的布尔值。跨度>
  • 您需要将ACCESS数据库中的字段设置为tickbox字段吗?你做到了吗?
【解决方案2】:

出现错误是因为CheckBoxCheckedChanged 事件正在触发另一个方法,并且错误出在该方法中,而不是CheckBox 本身。

更深入、更彻底地调试让我找到了这个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2013-08-22
    相关资源
    最近更新 更多