2010-09-22 6 views
2

Я пытаюсь получить доступ к данным из представления списка, используя имя ColumnHeader, но я получаю ошибкуКак получить доступ к элементу ListView по ключу?

LVProduct.FocusedItem.SubItems("Name").Text 

Итак, как же использовать функции с параметрами строки? Я не хочу использовать индекс, это слишком запутывает

ответ

8

При создании подпунктов, вы должны установить свойство Имени быть, что из столбец, в котором он находится.

Аксессуар [...] ищет поле Имя в классе ListViewSubItem.

Без этого набора текстовая операция ["Имя"], которую вы выполняете, вернет ошибку типа нулевого указателя.

Или, другими словами, поиск по ключевым словам не осуществляется по имени столбца. Он выполняет поиск по значению, которое вы задали в SubItem.Name при создании подпункта.

+0

https://social.msdn.microsoft.com/Forums/windows/en-US/b96f9fbe-e128-4b49-833d-2a5f6e678dae/access-listview-subitem-text-by-column-header?forum=winforms – 2015-12-04 18:55:53

+0

Weird ... я получаю пустую строку, когда я сообщениеbox.Name SubItems или ColumnHeaders. – 2015-12-04 19:16:28

-1

Предполагается использовать C# "indexer". Вы должны вызвать с помощью Sqare скобки:

LVProduct.FocusedItem.SubItems["Name"].Text 

Если вы хотите узнать больше о индексатор, посмотрите на this link on MSDN

+0

Привет, пост помечен как VB –

+0

Извините, мои извинения ... какая ошибка вы получаете? –

1

При создании подпунктов вам необходимо установить свойство name. Например:

listViewItem.SubItems.Add(
    New ListViewSubItem With {.Name = "Name", .Text = "yes"} 
) 

Затем вы можете использовать существующий код:

LVProduct.FocusedItem.SubItems("Name").Text 
12

Если Вы желаете получить подпозиция, основанный на колонке, это самый простой способ.

LVProduct.FocusedItem.SubItems(columnHeader1.Index).Text 

columnHeader1 бы название ColumnHeader вы желающий подэлемент с.

+0

Хорошее решение. К сожалению, я не могу дать больше одного взлёта. – prabhakaran

Смежные вопросы