如何获取Checked Listbox vb.net的检查状态

时间:2015-12-16 11:52:56

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

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

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

我也尝试过:

If chklbRegister.GetItemCheckState(nLoop) = True Then

但它仍然没有奏效。想法请。 谢谢 格雷厄姆

2 个答案:

答案 0 :(得分:3)

GetItemCheckState returns an Enum。枚举不是字符串而不是布尔值 您应该再次测试枚举

的定义值
If chklbRegister.GetItemCheckState(nLoop) = CheckState.Checked Then
    -----

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

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

答案 1 :(得分:0)

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

chklbRegister.GetItemCheckState(nLoop) = CheckState.Checked