Найдите выбранный элемент ListView и затем выполните действие по щелчку

#vb.net #winforms #listview #.net-5

#vb.net #winforms #listview #.net-5

Вопрос:

Я пробовал это:

  If ListView1.SelectedItems = 1 Then
        'do somehting
    ElseIf ListView1.SelectedItems = 2 Then
        'do something else
    Else
        'do another thing
    End If
 

Но это не сработало. Может кто-нибудь сказать мне, что я делаю не так?

Комментарии:

1. SelectedItems Свойство является коллекцией и не может быть равно целому числу. Вы пытаетесь проверить значение текста ListItem или количество SelectedItems коллекций?

Ответ №1:

SelectedItems Свойство элемента ListView управления представляет собой коллекцию (из потенциально нескольких выбранных элементов).

Рассмотрим ситуацию, когда у вас есть элемент управления ListView1, и вручную добавьте в него элементы в событие загрузки формы, например:

 ListView1.Items.Add("Dog")
ListView1.Items.Add("Cat")
ListView1.Items.Add("Bird")
 

Тогда у вас есть кнопка управления Button1, событие щелчка которой имеет следующий код:

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim s As String = ""
    For Each item As ListViewItem In ListView1.SelectedItems
        s  = item.Text   vbCrLf
    Next
    MsgBox(s)
End Sub
 

Когда вы нажимаете кнопку, она перебирает коллекцию всех выбранных элементов по одному, получая доступ .Text к свойству каждого элемента и добавляя их в выходные данные.

Итак, когда вы говорите «Найти выбранный элемент listview», выбранных элементов может быть несколько, поэтому, возможно, вы можете более точно объяснить, что вы хотели бы видеть при щелчке, поскольку элемент управления имеет несколько возможных применимых типов событий. Например. Click, ItemChecked, MouseClick, MouseDoubleClick,и т.д.

ОБНОВЛЕНИЕ: возможно, я неправильно понял ваш вопрос. Пожалуйста, предоставьте более подробную информацию.

Возможно, это то, что вам нужно?

 Private Sub ListView1_SelectedIndexChanged(sender As Object, e As ListViewItemSelectionChangedEventArgs) Handles ListView1.ItemSelectionChanged
    If e.Item.Text = "Dog" Then MsgBox("It's a dog")
End Sub
 

Работа с этими событиями может быть сложной. Например, появится сообщение msgbox, в котором вы выбираете dog. Но он также появляется, когда выбор меняется с dog на что-то другое, потому что это все еще событие изменения выбора. Однако это должно помочь вам двигаться в правильном направлении. Возможно, вам потребуется внимательно просмотреть различные события, чтобы выяснить, какое из них лучше всего подходит для вашей ситуации, и вам может потребоваться обработать несколько событий.