我想在列表框中获取所有选定的列表项,并将它们的值放入逗号分隔的字符串中。我使用包含我的自定义对象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窗体。我该如何做到这一点?
答案 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);