如何获取选中列表框的选中状态 vb.net
How to get checked state of Checked Listbox vb.net
我有一个选中的列表框,我正在 运行 浏览并将名称保存到数据库中。当我 运行 通过时,我需要查看复选框是否被选中或清除。
我尝试了以下代码但无济于事:
If chklbRegister.GetItemCheckState(nLoop).ToString = "1" Then
.Parameters.AddWithValue("@sqlAttended", 1)
Else
.Parameters.AddWithValue("@sqlAttended", 0)
End If
我也试过:
If chklbRegister.GetItemCheckState(nLoop) = True Then
但还是不行。请出主意。
谢谢
格雷厄姆
GetItemCheckState returns an Enum。枚举不是字符串,也不是布尔值。
您应该再次测试枚举的定义值
If chklbRegister.GetItemCheckState(nLoop) = CheckState.Checked Then
-----
如果将 ToString 方法应用于枚举值,您将获得枚举的翻译文本,在您的例子中是单词 "Checked" 而不是字符串“1”。
当然,作为整数类型的基本数值的枚举,您始终可以将 return 值转换为整数,但您永远不应该这样做,而是使用正确的枚举语法
作为最后的说明。这个问题应该由编译器发出信号,而不是跳过编译阶段。此编译器行为是由 Option Strict 设置为 Off 而不是 On 引起的。我建议在您的项目配置中更改此选项以避免此类其他可能非常微妙的错误。
您可以查看 GetItemCheckState that it returns a value from the CheckState 枚举的文档,因此您需要检查一下:
chklbRegister.GetItemCheckState(nLoop) = CheckState.Checked
我有一个选中的列表框,我正在 运行 浏览并将名称保存到数据库中。当我 运行 通过时,我需要查看复选框是否被选中或清除。 我尝试了以下代码但无济于事:
If chklbRegister.GetItemCheckState(nLoop).ToString = "1" Then
.Parameters.AddWithValue("@sqlAttended", 1)
Else
.Parameters.AddWithValue("@sqlAttended", 0)
End If
我也试过:
If chklbRegister.GetItemCheckState(nLoop) = True Then
但还是不行。请出主意。 谢谢 格雷厄姆
GetItemCheckState returns an Enum。枚举不是字符串,也不是布尔值。
您应该再次测试枚举的定义值
If chklbRegister.GetItemCheckState(nLoop) = CheckState.Checked Then
-----
如果将 ToString 方法应用于枚举值,您将获得枚举的翻译文本,在您的例子中是单词 "Checked" 而不是字符串“1”。
当然,作为整数类型的基本数值的枚举,您始终可以将 return 值转换为整数,但您永远不应该这样做,而是使用正确的枚举语法
作为最后的说明。这个问题应该由编译器发出信号,而不是跳过编译阶段。此编译器行为是由 Option Strict 设置为 Off 而不是 On 引起的。我建议在您的项目配置中更改此选项以避免此类其他可能非常微妙的错误。
您可以查看 GetItemCheckState that it returns a value from the CheckState 枚举的文档,因此您需要检查一下:
chklbRegister.GetItemCheckState(nLoop) = CheckState.Checked