我正在WinForms应用程序中填充ListBox,这样:
listBoxUsers.DataSource = ctx.Users.ToList();
listBoxUsers.DisplayMember = "Name";
listBoxUsers.ValueMember = "Id";
当我将SelectionMode
设置为MultiSimple
时,如何检索所选的ID
我想对它们进行foreach
循环,如下所示:
foreach(var itemId in listBoxUsers.SelectedValues)//unfortunately not exist
{
int id = int.Parse(itemId);
// . . .
}
答案 0 :(得分:1)
由于你知道项目的类型,你可以使用这样的代码:
var selectedValues = listBox1.SelectedItems.Cast<User>().Select(x=>x.Id).ToList();
旁注: ListBox
控件缺少GetItemValue
方法。一种方法应该像GetItemText
一样工作,但是要获取值。在linked post我共享了一个扩展方法来获取项目的值。使用该扩展方法,您可以获得与项目类型无关的选定值:
var selectedValues = listBox1.SelectedItems.Cast<object>()
.Select(x => listBox1.GetItemValue(x)).ToList();
如果由于某种原因,您有兴趣为所选值设置文本表示:
var txt = string.Join(",", selectedValues);
答案 1 :(得分:0)
您是否尝试过SelectedItems属性?
foreach (var item in listBoxUsers.SelectedItems)
{
}
答案 2 :(得分:0)
试试这个:
foreach (DataRowView item in listBoxUsers.SelectedItems)
{
int id=int.parse(item[0].ToString());
}