Получение текста подпункта списка - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь получить текст подпункта ListView в vb. net. согласно этому ответу, приведенный ниже код должен работать.

Function gen() As String
    Dim Log = New Logging.Log("gen")
    Dim Code As String = getTemplateCode()
    For Each i As ListViewItem In ListView1.Items
        Log.WriteEntry("Item: " + i.Text)
        If i.SubItems.Count > 0 Then
            Log.WriteEntry("Item: " + i.SubItems(0).Text)
            Code = Code.Replace(i.Text, i.SubItems(0).Text)
        End If
    Next
    Return Code
End Function

Однако вместо получения строки в ListViewItem.SubItem.Text я получаю то, что кажется ListViewItem.Text, и не могу понять, почему.

Вот фактический вывод журнала из приведенного выше кода:

gen Information: 0 : Item: $Parshah$
gen Information: 0 : Item: $Parshah$
gen Information: 0 : Item: $Year$
gen Information: 0 : Item: $Year$
gen Information: 0 : Item: $EnglishId$
gen Information: 0 : Item: $EnglishId$
gen Information: 0 : Item: $books$
gen Information: 0 : Item: $books$
gen Information: 0 : Item: $title$
gen Information: 0 : Item: $title$

и снимок экрана с просмотром списка

Listview_Screenshot_Sample

Вывод журнала должен был быть

gen Information: 0 : Item: $Parshah$
gen Information: 0 : Item: nothing
gen Information: 0 : Item: $Year$
gen Information: 0 : Item: nothing
gen Information: 0 : Item: $EnglishId$
gen Information: 0 : Item: nothing
gen Information: 0 : Item: $books$
gen Information: 0 : Item: nothing
gen Information: 0 : Item: $title$
gen Information: 0 : Item: nothing

Что я делаю не так?

1 Ответ

0 голосов
/ 28 апреля 2020

Хорошо. Глупая ошибка. Капля исследований сказала мне, что ListViewItem содержит себя в своем первом подэлементе, и первый динамически добавляемый подэлемент начинается с индекса один вместо нуля. (упс.) Думайте Пакетные Аргументы, где% ~ 0 - сам файл ... lol.

ТАК, мы изменяем код следующим образом:

    Function gen() As String
        Dim Log = New Logging.Log("gen")
        Dim Code As String = getTemplateCode()
        For Each i As ListViewItem In ListView1.Items
            Log.WriteEntry("Item: " + i.Text)
            If i.SubItems.Count > 0 Then
                Log.WriteEntry("Item: " + i.SubItems(1).Text) 'changed 0 to 1
                Code = Code.Replace(i.Text, i.SubItems(1).Text) 'changed 0 to 1
            End If
        Next
        Return Code
    End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...