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

Tim*_*Tim 5 vb.net devexpress

我正在使用DevExpress 9.3 CheckedComboBoxEdit,我需要获取所有选中项目的集合.看起来这应该是一个简单的任务,但我找到的最接近解决方案的东西是我可以使用的东西:

CheckedComboBoxEdit.Properties.GetItems.GetCheckedValues()
Run Code Online (Sandbox Code Playgroud)

不幸的是,这里没有GetCheckedValues方法.我发现了以下内容:

CheckedComboBoxEdit.Properties.GetCheckedItems()
Run Code Online (Sandbox Code Playgroud)

它返回一个对象,但我找不到任何关于我应该将对象强制转换为什么的引用.我也尝试遍历这些项目,并根据此处的建议检查每个项目是否已检查,但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
Run Code Online (Sandbox Code Playgroud)

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

bpi*_*iec 7

这是我使用的:

var ids = (from CheckedListBoxItem item in checkedComboBoxEdit.Properties.Items
           where item.CheckState == CheckState.Checked
           select (int)item.Value).ToArray();
Run Code Online (Sandbox Code Playgroud)

您还可以创建一个扩展方法,CheckedListBoxItem仅返回选中的项值.

(这是C#,而不是VB,但概念是一样的.)