Я хочу сохранить дополнительную информацию об элементе списка с помощью пользовательского класса, но не могу заставить его работать. В настоящее время я использую этот код для выполнения чего-то подобного, используя элемент списка. Я просто хочу сделать то же самое со списком.
Public Class myListboxItem
Public id As String
Public rootFolder As String
Public name As String
Public info() As String
Public Text As String
Public Overrides Function ToString() As String
Return Me.Text
End Function
End Class
Я установил свойства вот так
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim item As New myListboxItem
item.Text = "This is a Test"
item.rootFolder = "C:\test"
item.id = "testid"
item.name = "Test Item"
item.info(0) = "Some Information"
lstExample.Items.Add(item)
End Sub
Тогда я могу получить доступ к этим дополнительным свойствам, используя это:
Private Sub lstExample_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstExample.SelectedIndexChanged
Dim item As myListboxItem = CType(lstExample.SelectedItem, myListboxItem)
messagebox.show(item.id)
messagebox.show(item.rootFolder)
messagebox.show(item.name)
messagebox.show(item.info(0))
End sub
Итак, мой вопрос: как это можно сделать с помощью списка? Вот что я попробовал:
Public Class myListViewItem
Public id As String
Public rootFolder As String
Public name As String
Public info() As String
Public Text As String
Public Overrides Function ToString() As String
Return Me.Text
End Function
End Class
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim item As New myListViewItem
item.Text = "This is a Test"
item.rootFolder = "C:\test"
item.id = "testid"
item.name = "Test Item"
item.info(0) = "Some Information"
lsvExample.Items.Add(item)
End Sub
Private Sub lsvExample_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lsvExample.SelectedIndexChanged
'problem with the next line
Dim item As myListViewItem = CType(lsvExample.SelectedItems, myListViewItem)
'tried this too.. similar error
Dim item2 As myListViewItem = CType(lsvExample.SelectedItems(0), myListViewItem)
messagebox.show(item.id)
messagebox.show(item.rootFolder)
messagebox.show(item.name)
messagebox.show(item.info(0))
End sub
Я получаю сообщение об ошибке: «Значение типа« System.Windows.Forms.listView.SelectedListViewItemCollection »не может быть преобразовано в« MyProject.myListViewItem »