Vb.net Visual Basic获取所选项目

Vb.net Visual Basic获取所选项目,vb.net,Vb.net,在VisualBasic中,我尝试检索所有选定项,而不是一个。 这是尝试此过程之前的代码 For Each line As String In lines If line.Contains(lbActiveKeys.SelectedItem) Then lines.Remove(line) Exit For End If

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

            For Each line As String In lines
                If line.Contains(lbActiveKeys.SelectedItem) Then
                    lines.Remove(line)
                    Exit For
                End If
            Next
我无法确定如何检查该行是否包含任何LBActiveKey。SelectedItems*(列表框) 我试着做嵌套循环,但得到的都是错误

你知道实现这一目标的最佳方式是什么吗


干杯。

我认为您需要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

您可以使用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()

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

您可以反向操作,并在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

线条对象的基本类型是什么?什么类型的列表?使用字符串列表查看我的答案。请尝试使用lbActiveKeys。SelectedItem.Value…Microsoft.VisualBasic.dll中发生类型为“System.MissingMemberException”的未处理异常。其他信息:未找到类型为“String”的公共成员“Value”。lbActiveKeys的类型是什么?这不是一个列表框吗?它是一个列表框,在表单上。太好了,对你很好!非常感谢。:)注意,这与原始匹配不同,因为只有在完全匹配的情况下才会删除该项,而如果字符串包含选定字符串,原始匹配才会删除该项。如有必要,请更改此行,
Lines.remove(Lines.Find(Function(x)x.Contains(SearchString))
,如果工作不正常,因为匹配不精确,那么if失败,因此您也必须删除if。