以编程方式设置列表框从逗号分隔的列表中选择项目
本文关键字:列表 分隔 项目 选择 方式 编程 设置 | 更新日期: 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,则可能会引发异常。