Сравнить ListViewItems с SelectedItems - PullRequest
0 голосов
/ 08 марта 2019

У меня есть следующая проблема:

У меня есть ListView, например, с 5 элементами:

AAAA (selected)
BBBB 
CCCC (selected)
AAAA (selected)
AAAA

И я проверю, выбраны ли все те же элементы (также могут быть дополнительныеэлементы, выбранные здесь, например, CCCC), если нет, то я получу Msgbox с сообщением об ошибке en.

В этом примере он должен получить сообщение об ошибке, поскольку отсутствует один элемент AAAA.

Thisэто то, что я пробовал, но в этом случае он не работает, если вы выбираете дополнительный элемент, так что работает только один, например, AAAA.(AAAA и BBBB не работают)

ContainerBox - это ListView

Dim SelectedContainer As Integer = ContainerBox.SelectedItems.Count - 1
Dim ContainerXY As String
Dim ContainerXYAnzahl As Integer
Dim ContainerXYAnzahlAusge As Integer

For i As Integer = 0 To SelectedContainer
    ContainerXY = ""
    ContainerXYAnzahl = 0
    ContainerXYAnzahlAusge = 0
    ContainerXY = ContainerBox.SelectedItems(i).ToString.Substring    (ContainerBox.SelectedItems(i).ToString.IndexOf(":") + 1)
    For ii As Integer = 0 To ContainerBox.Items.Count - 1
        If ContainerXY = ContainerBox.Items(ii).ToString.Substring (ContainerBox.Items(ii).ToString.IndexOf(":") + 1) Then
           ContainerXYAnzahl += 1
        End If
    Next
    For ii = 0 To SelectedContainer
        If ContainerXY = ContainerBox.SelectedItems(i).ToString.Substring(ContainerBox.SelectedItems(i).ToString.IndexOf(":") + 1) Then
        ContainerXYAnzahlAusge += 1
        End If
    Next
    If ContainerXYAnzahlAusge <> ContainerXYAnzahl Then
        PresentPopup("Bitte wählen Sie alle Positionen" & Environment.NewLine & "des Container", AlertType._Error)
        Exit Sub
    End If
Next

А вот так выглядит ListView:

ListView

1 Ответ

0 голосов
/ 08 марта 2019

Попробуйте это

Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged
    Dim selectedList = ListView1.SelectedItems.OfType(Of ListViewItem)
    Dim desiredList = ListView1.Items.OfType(Of ListViewItem).Where(Function(i) selectedList.Select(Function(j) j.Text).Contains(i.Text))
    Dim missingItems = desiredList.Except(selectedList)
    Dim selectionsCorrect = Not missingItems.Any()
    Me.Text = $"Correct: {selectionsCorrect}; Missing items: ({String.Join(", ", missingItems.Select(Function(i) i.Text))})"
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...