1

我目前正在使用这种方法来匹配确切的字符串并在列表框中选择它所属的索引:

private void searchbtn_Click(object sender, EventArgs e)
{
    string term  = searchbox.Text;
    int index = memlist.FindString(term);
    if (index != -1)
        memlist.SetSelected(index, true);
}

是否可以选择所有部分匹配的字符串?我该怎么做呢?

4

1 回答 1

2

您可以使用以下代码选择项目的索引,这些索引以您的字符串开头,然后遍历它们并设置选定的项目:

memlist.ClearSelected(); // clear previous selection
memlist.Items.Cast<object>()
       .Select((item, index) => new { Text = memlist.GetItemText(item), Index = index })
       .Where(x => x.Text.StartsWith(term, StringComparison.CurrentCultureIgnoreCase))
       .ToList()
       .ForEach(x => memlist.SetSelected(x.Index, true));

顺便说一句,不要忘记将SelectModeListBox 设置为多选。


您还可以在 foreach 循环中选择项目:

var indexesToSelect = memlist.Items.Cast<object>()
      .Select((item, index) => new { Text = memlist.GetItemText(item), Index = index })
      .Where(x => x.Text.StartsWith(term, StringComparison.CurrentCultureIgnoreCase))
      .Select(x => x.Index);

foreach(int index in indexesToSelect)
     memlist.SetSelected(index, true);
于 2013-04-02T21:13:15.980 回答