我在从逗号分隔的数据列表中设置列表框中的选定项目时遇到问题。
逗号分隔列表的值如下(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
,但它不会突出显示/选择任何项目。
有什么想法吗?
答案 0 :(得分:3)
由于您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);
}
}
答案 1 :(得分:2)
使用“Items”代替“SelectedItems”。使用类似下面的内容:
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());
}
答案 2 :(得分:0)
您确定这些物品已经在列表中吗?
来自ListBox.SelectedObjectCollection Class documentation on MSDN:
ListBox.SelectedObjectCollection类将所选项存储在ListBox中。存储在ListBox.SelectedObjectCollection中的项是ListBox.ObjectCollection类中包含的项。
其他人已经为您提供了可行的代码,但我将继续发布这个帖子因为我认为值得阅读文档中的备注以了解项目中项目之间的关系集合和SelectedItems集合中的项目 - 在您选择这些项目后,它可能有助于下一步。
答案 3 :(得分:0)
试试这个:
foreach (string val in values)
listBox.SelectedItems.Add(listBox.Items[listBox.Items.IndexOf(val)]);
但如果在listBox.Items
中找不到val,则可能引发异常