c# - 获取多个列表框值并转换为逗号分隔的字符串winforms

时间:2014-11-15 22:22:07

标签: c# winforms listbox

我想在列表框中获取所有选定的列表项,并将它们的值放入逗号分隔的字符串中。我使用包含我的自定义对象TestSubject的List填充列表框,其中包含TestSubjectID和TestSubjectName:

var objTestSubjectList = new List<TestSubject>();
//code that adds items to List

然后我将Listbox数据源映射到此列表并相应地设置DisplayMember,ValueMember:

lbTestSubjects.DataSource = objTestSubjectList;
lbTestSubjects.DisplayMember = "TestSubjectName";
lbTestSubjects.ValueMember = "TestSubjectID";

当选择了列表框中的多个项目时,我想获取每个项目的值(TestSubjectID)并将它们放在逗号分隔的字符串中。例如,如果选择3个项目,TestSubjectIDs为10 20和30,我想循环并抓取值并将它们放在一个字符串中:“10,20,30”。我正在使用Windows窗体。我该如何做到这一点?

1 个答案:

答案 0 :(得分:2)

您需要遍历SelectedIndices集合,检索存储在与所选索引对应的Item中的TestSubject对象,然后将其TestSubjectID值添加到整数列表中。最后string.Join将为您创建字符串。

List<int> ids = new List<int>();
foreach(int x in lbTestSubjects.SelectedIndices)
{
    TestSubject t = lbTestSubjects.Items[x] as TestSubject ;
    ids.Add(t.TestSubjectID);
}
string result = string.Join(",", ids);
Console.WriteLine(result);

使用LINQ

也可以减少很多代码
var ri = lbTestSubjects.SelectedIndices
                       .OfType<int>()
                       .Select(i => ((TestSubject)lbTestSubjects.Items[i]).TestSubjectID);
string result = string.Join(",", ri);