【问题标题】:Programmatically set listbox selected items from comma separated list以编程方式从逗号分隔列表中设置列表框选定项目
【发布时间】:2014-08-22 20:11:57
【问题描述】:

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

逗号分隔的列表有这样的值(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,但它不会突出显示/选择任何项目。

有什么想法吗?

【问题讨论】:

  • 您的目标是什么类型的应用程序? WinForms?
  • @Habib 是的,它是一个 WinForms 应用程序。
  • 你不应该像listBox.Items.Add(val);那样做吗?

标签: c# winforms listbox


【解决方案1】:

由于您的 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);
    }
}

【讨论】:

    【解决方案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());
        }
    

    【讨论】:

      【解决方案3】:

      您确定这些项目已经在列表中了吗?

      来自ListBox.SelectedObjectCollection Class documentation on MSDN

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

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

      【讨论】:

        【解决方案4】:

        试试这个:

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

        但如果在 listBox.Items 中找不到 val,可能会引发异常

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-23
          • 2011-11-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多