获取CheckBoxList的ValueMembers

时间:2015-03-15 19:57:23

标签: c# winforms linq checkboxlist

我有一个linq查询,我已使用Windows窗体

绑定到一个复选框列表
var webresourcesFromCRM = from w in orgSvcContext.CreateQuery("webresource")                                                   
                          select new
                          {
                              webresourceid = w["webresourceid"],
                              name = w["name"]
                          };

绑定时我使用了DisplayMember和ValueMember属性

cblWebResources.DataSource = webresourcesFromCRM;
cblWebResources.DisplayMember = "name";
cblWebResources.ValueMember = "webresourceid";

以上代码效果很好。但是我的问题是我想获得已检查项目的ValueMember。我已经尝试了cblWebResources.SelectedItems或cblWebResources.SelectedIndices的每个组合。我只是希望能够遍历我选择的项目,并将每个ValueMember放在一个Windows窗体应用程序中。

我试过其他帖子,但没有运气这是一个Windows窗体应用

var selectedItems = checkedUsers.Items.Cast<ListItem>()
                                      .Where(li => li.Selected)
                                      .Select(li => int.Parse(li.Text));
int sum = selectedItems.Sum();
string items = string.Join(",", selectedItems);

2 个答案:

答案 0 :(得分:4)

CheckedListBox方便地同时具有:

 var c = checkedListBox1.CheckedItems;
 var s = checkedListBox1.SelectedItems;

现在你得到了路口:

var cs = c.Cast<object>().Where(i => s.Contains(i));
var sc = s.Cast<object>().Where(i => c.Contains(i));

可悲的是CheckedListBoxes不支持MultiSelect,所以第二种形式应该更好。

令人遗憾的是,还有一个绑定Checkboxes的选项: - (

答案 1 :(得分:0)

我需要将已检查的项目放入对象

foreach(cblWebResouces.CheckedItems.Cast()中的var项目)         {             MessageBox.Show(item.webresourceid);         }