0

在 Visual Basic 中,我试图检索所有选定的项目,而不仅仅是一个。这是尝试此过程之前的代码。

            For Each line As String In lines
                If line.Contains(lbActiveKeys.SelectedItem) Then
                    lines.Remove(line)
                    Exit For
                End If
            Next

我无法弄清楚如何检查该行是否包含任何 lbActiveKeys.SelectedItems* (List Box) 我尝试执行嵌套循环,但我得到的只是错误。

任何想法实现这一目标的最佳方法是什么?

干杯。

4

3 回答 3

1

您可以以相反的方式工作并遍历 SelectedItems 集合。这应该有效:

    For Each Item As String In lbActiveKeys.SelectedItems
        Dim SearchString As String = Item
        If Lines.Contains(Item) Then
            Lines.Remove(Lines.Find(Function(x) x = SearchString))
        End If
    Next
于 2013-06-30T12:47:44.180 回答
0

你可以用 linq 做到这一点:

lines = lines.Where(Function(x As String) As Boolean
                        Return Not lbActiveKeys.SelectedItem.Cast(Of String) _
                                   .Where(Function(y) As Boolean
                                              Return x.Contains(y)
                                          End Function).Any()
                    End Function).ToList()

它选择不与所选项目列表相交的项目,其中选择取决于一个字符串是否包含另一个字符串。

于 2013-06-30T12:37:32.337 回答
-1

我认为你需要 lbActiveKeys.SelectedItem.Value 因为你想比较它们的字符串值而不是整个选定的对象......你可能还想让它们的大小写相同并修剪以确保它们正确比较:

For Each line As String In lines
   If line.ToLower().Contains(lbActiveKeys.SelectedItem.Value.ToLower()) Then
       lines.Remove(line)
       Exit For
   End If
Next
于 2013-06-30T12:18:59.167 回答