我正在使用DevExpress 9.3 CheckedComboBoxEdit,我需要获取所有选中项目的集合。看起来这应该是一个简单的任务,但我发现的最接近解决方案的是我可以使用:
CheckedComboBoxEdit.Properties.GetItems.GetCheckedValues()
不幸的是,这里没有 GetCheckedValues 方法。我发现了以下内容:
CheckedComboBoxEdit.Properties.GetCheckedItems()
它返回一个对象,但我找不到任何关于我应该将该对象转换为什么的引用。我还尝试迭代这些项目,并检查每一项以查看是否已选中,按照以下建议here http://www.devexpress.com/Support/Center/Question/Details/Q493701,但 Items 返回字符串集合,而不是 CheckedListBoxItem,因此我无法测试它们是否被选中。
我想要的是已检查项目的字符串集合;现在,我可以接受任何类型的收藏,甚至可以自己创建收藏。我知道一定有一些非常简单的事情我忽略了,但我似乎找不到它。
SOLUTION
这是我想出的解决方案。我更喜欢更优雅的东西;似乎应该有一种方法来获取选中的项目,因为这就是控件的用途。尽管如此,这似乎有效:
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
如果有人能给我一个合适的解决方案,我很乐意看到。
这就是我使用的:
var ids = (from CheckedListBoxItem item in checkedComboBoxEdit.Properties.Items
where item.CheckState == CheckState.Checked
select (int)item.Value).ToArray();
您还可以在上面创建一个扩展方法CheckedListBoxItem
它将仅返回已检查的项目值。
(这是 C#,不是 VB,但概念是相同的。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)