我正在使用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)
如果有人能给我一个合适的解决方案,我很乐意看到它.
这是我使用的:
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,但概念是一样的.)
| 归档时间: |
|
| 查看次数: |
10297 次 |
| 最近记录: |