以编程方式设置列表框从逗号分隔的列表中选择项目

本文关键字:列表 分隔 项目 选择 方式 编程 设置 | 更新日期: 2023-09-27 18:19:13

我在从逗号分隔的数据列表中设置列表框中的选定项目时遇到问题。

逗号分隔的列表具有如下值 (valueList(: A,B,C,D

List<string> values = valueList.Split(',').ToList();
foreach(string val in values)
{
    listBox.SelectedItems.Add(val);
}

基本上,我循环访问分隔列表中的项目,并尝试在列表框中设置选定的项目(其中包含A, B, C, D, E, F的项目(。使用此代码,我怀疑它会选择列表框中A-D的项目,但它不会突出显示/选择任何项目。

有什么想法吗?

以编程方式设置列表框从逗号分隔的列表中选择项目

由于您的ListBox中已经有项目,并且您只想选择由string.Split操作返回的项目,请使用ListBox.SetSelected方法,如下所示:

var valueArray = valueList.Split(',');
for (int i = 0; i < listBox.Items.Count; i++)
{
    if (valueArray.Contains(listBox.Items[i].ToString()))
    {
        listBox.SetSelected(i, true);
    }
}
不要使用

"SelectedItems",而是使用"Items"。使用如下所示的内容:

string a = "1,2,3,4";
    List<string> values = a.Split(',').ToList();
    ListBox lb = new ListBox();
    foreach (string val in values)
    {
        lb.Items.Add(val.ToString());
    }

您是否确保这些项目已在列表中?

从 MSDN 上的 ListBox.SelectedObjectCollection 类文档中:

类将选定的项存储在 ListBox 中。存储在 ListBox.SelectedObjectCollection 中的项是包含在 ListBox.ObjectCollection 类中的项。

其他人已经为您提供了有效的代码,但我将继续发布这篇文章,因为我认为值得通读文档中的注释以了解 Items 集合中的项与 SelectedItems 集合中的项之间的关系 - 它可能有助于您选择这些项后的下一步。

试试这个:

foreach (string val in values)
   listBox.SelectedItems.Add(listBox.Items[listBox.Items.IndexOf(val)]);

但如果在列表框中找不到 val,则可能会引发异常。