Visual Basic获取所选项目

时间:2013-06-30 12:01:14

标签: vb.net

在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 *(列表框) 我尝试做嵌套循环,但我得到的都是错误。

任何想法,最好的方法是什么?

干杯。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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()

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

答案 2 :(得分:-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