我认为这很容易,但不是
我有带有绑定列表框的窗体(带有值成员和显示成员)
我启用了列表框的多选项
因此我需要获取所有选定项目的所有选定值(请记住它已绑定,因此我需要所选值而不是文本或选定文本)
所以我可以在其他一些表中插入这些值
我尝试了这个,但它不起作用
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 :(得分: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;
}
答案 1 :(得分: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();