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

本文关键字:分隔 Winforms 字符串 转换 列表 获取 | 更新日期: 2023-09-27 18:30:29

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

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

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

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

选择列表框中的多个项目后,我想获取每个项目的值(TestSubjectID)并将它们放在逗号分隔的字符串中。例如,如果选择了 3 个项目,TestSubjectID 为 10 20 和 30,我想遍历并获取值并将它们放在一个字符串中,如下所示:"10,20,30"。我正在使用窗口窗体。我将如何实现这一点?

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

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

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);