我正在使用DevExpress 9.3 CheckedComboBoxEdit,我需要获取所有选中项目的集合。看起来这应该是一个简单的任务,但我找到的最接近解决方案的东西是我可以使用的东西:
CheckedComboBoxEdit.Properties.GetItems.GetCheckedValues()
不幸的是,这里没有GetCheckedValues方法。我找到了以下内容:
CheckedComboBoxEdit.Properties.GetCheckedItems()
返回一个对象,但我找不到任何关于我应该将对象强制转换为什么的引用。我还尝试遍历这些项目,并根据here的建议检查每个项目以查看是否已检查,但Items返回一个字符串集合,而不是CheckedListBoxItem,因此我无法测试它们是否被检查
我想要的是已检查项目的String集合;现在,我可以接收它们作为任何类型的集合,甚至自己创建集合。我知道一定有一些非常简单的东西我可以忽略,但我似乎无法找到它。
解
这是我提出的解决方案。我更喜欢更优雅的东西;似乎应该有一种方法来获取已检查的项目,因为这是控件的用途。然而,这似乎有效:
Private Function GetChecked() As List(Of String)
Dim checked As New List(Of String)
Dim checkedString As String = CType(SitePickerControl.Properties.GetCheckedItems(), String)
If (checkedString.Length > 0) Then
checked.AddRange(checkedString.Split(New Char() {","c}))
End If
Return checked
End Function
如果有人能给我一个合适的解决方案,我很乐意看到它。
答案 0 :(得分:7)
这就是我使用的:
var ids = (from CheckedListBoxItem item in checkedComboBoxEdit.Properties.Items
where item.CheckState == CheckState.Checked
select (int)item.Value).ToArray();
您还可以在CheckedListBoxItem
上创建一个扩展方法,该方法仅返回选中的项目值。
(这是C#,而不是VB,但概念是一样的。)
答案 1 :(得分:2)
我知道这是一个老帖子,但我认为无论如何我应该投球。
我不确定v9.3何时发布,但现在肯定有一个GetCheckedValues()函数。这里描述:
我也在其中一个支持案例中找到了答案(比这篇文章要早得多):
https://www.devexpress.com/Support/Center/Question/Details/Q431364
因此,要获得所有选定值的列表,您需要以下内容:
myCombo.Properties.GetItems().GetCheckedValues()
或检查是否选择了特定值:
if (myCombo.Properties.GetItems().GetCheckedValues().contains("myvalue"))
我希望这有助于未来的搜索者。
答案 2 :(得分:0)
对于 VB.NET
Dim ids = (From item In checkedComboBoxEdit.Properties.Items Where item.CheckState = CheckState.Checked Select CInt(item.Value)).ToArray()