在DevExpress CheckedComboBoxEdit中获取已检查的项目

时间:2014-02-28 18:26:31

标签: vb.net devexpress

我正在使用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

如果有人能给我一个合适的解决方案,我很乐意看到它。

3 个答案:

答案 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://documentation.devexpress.com/#WindowsForms/DevExpressXtraEditorsControlsCheckedListBoxItemCollection_GetCheckedValuestopic

我也在其中一个支持案例中找到了答案(比这篇文章要早得多):

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()