【问题标题】:How to get checked state of Checked Listbox vb.net如何获得 Checked Listbox vb.net 的检查状态
【发布时间】:2015-12-16 11:52:56
【问题描述】:

我有一个选中的列表框,我正在运行它并将名称保存到数据库中。当我运行时,我需要查看复选框是否被选中或清除。 我尝试了以下代码,但无济于事:

If chklbRegister.GetItemCheckState(nLoop).ToString = "1" Then
.Parameters.AddWithValue("@sqlAttended", 1)
Else
.Parameters.AddWithValue("@sqlAttended", 0)
End If

我也试过了:

If chklbRegister.GetItemCheckState(nLoop) = True Then

但它仍然不起作用。请出主意。 谢谢 格雷厄姆

【问题讨论】:

    标签: vb.net visual-studio-2015 checkedlistbox


    【解决方案1】:

    GetItemCheckState returns an Enum。枚举不是字符串,也不是布尔值。
    您应该再次测试枚举的定义值

    If chklbRegister.GetItemCheckState(nLoop) = CheckState.Checked Then
        -----
    

    如果您将 ToString 方法应用于枚举值,您将获得枚举的翻译文本,在您的情况下是单词“Checked”而不是字符串“1”。
    当然,作为整数类型的枚举,你总是可以将返回值转换为整数,但你永远不应该这样做,而是使用正确的枚举语法

    作为最后一点。这个问题应该由编译器发出信号,并且不会超过编译阶段。此编译器行为是由 Option Strict 设置为 Off 而不是 On 引起的。我建议在您的项目配置中更改此选项,以避免其他此类可能非常微妙的错误。

    【讨论】:

    • 感谢您的款待。我设置了 Option Strict 并得到了 2069 错误,这是我在圣诞假期要解决的问题!我还应该打开 Option Explicit,这是我在 VB6 中指定的吗?
    • 如果您有一个从 VB6 移植的大型程序,这应该是可以预料的。对于 Option Explicit On,我只能说 MSDN 上写的 Setting Option Explicit to Off 通常不是一个好习惯。您可能会在一个或多个位置拼错变量名,这会在程序运行时导致意外结果
    • Explicit On, Strict On - 总是(有一些例外情况需要 Option Strict Off,例如后期绑定)
    【解决方案2】:

    您可以查看GetItemCheckState 的文档,它从CheckState 枚举中返回一个值,因此您需要检查一下:

    chklbRegister.GetItemCheckState(nLoop) = CheckState.Checked
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-24
      • 2018-03-22
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 2013-08-28
      • 1970-01-01
      相关资源
      最近更新 更多