如何检索ListBox中所选项的选定值?

时间:2016-11-26 13:48:30

标签: c# .net winforms listbox

我正在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);
    // . . . 
}

3 个答案:

答案 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());
            }