2013-10-13 43 views
0

我认为这是容易的,但它不是获取绑定列表框中选择的值

我有窗户,绑定列表框(与value成员和显示部件)

我启用了多选的列表框

这样形成我需要选择的项目的全部和唯一的选择值(记住它的束缚,所以我需要选择的值不是文本或所选文本)

这样我就可以在一些其他表插入这些值

我试过,但它不工作

for (int x = 0; x <= listProjects.SelectedItems.Count; x++) 
{ 
    if(listProjects.GetSelected(x) == true) 
    { 
     string d = listProjects.SelectedValue.ToString(); 
     string s = listProjects.SelectedItems[x].ToString(); 

     //listProjects.DisplayMember[x].ToString(); 
     //listProjects.Items[x].ToString(); 
    } 
    } 
+0

'DataSource'怎么样?我们需要关于'ListBox'的'DataSource'的一些信息 –

回答

0

假设你DataSource有元素类型为ItemType,和值的成员是ItemValue,我们可以施展各自选择的项目(的object)该类型并获得值你想要的:

var values = listBox1.SelectedItems.OfType<ItemType>() 
            .Select(item=>item.ItemValue).ToList(); 

您可以随时使用Reflection没有关于提前标的项目类型的知识,只是要确保ValueMember是有效的。 不过,我认为这是仅供参考,不建议

var values = listBox1.SelectedItems.OfType<object>() 
        .Select(item=> item.GetType() 
             .GetProperty(listBox1.ValueMember) 
             .GetValue(item, null)).ToList(); 
1

当您绑定的项目到ListBox,ListBox.Items将你绑定到它的项目的类型,所以如果你的所谓项目的类型BoundItemType和Value是BoundItemType的属性,你可以做的事情是这样的:

for (int x = 0; x <= listProjects.SelectedItems.Count; x++) 
{ 
    BoundItemType boundItem = listProjects.SelectedItems[x] as BoundItemType; 
    string selectedValue = boundItem.Value; 
}