Можно ли добавить текст в существующие ListViewSubItems

Я пытаюсь заполнить подпункты listView после того, как элементы уже были добавлены в само представление. Это выдает ошибку, и я не знаю, происходит ли это из-за того, что я делаю это неправильно, или добавление подэлемента после его создания невозможно.

Я создал форму окна с listView на это очень образно названо listView1, который заполняется компонентами и возможными хеш-функциями, которые могут быть выполнены над ними.
ListView1

Это прекрасно работает и заполнен, как я хотел бы. Теперь пользователь нажимает кнопку, которая должна запускать эти хэш-функции для каждого компонента, и заполняет соответствующее поле справа от каждого, как это делается.

Я не могу заставить каждую коробку заполнить. Мой код:

 //Put the verification in the appropriate column, and line
//Iterate through each row until the appropriate one is found
for(int j=0;j<this->listView1->Items->Count;j++){
//When the row matches the component that was just verified, add things to that row
if(this->listView1->Items[j]->Text == response->componentID){
//Now that the row has been successfully found, find the column
for(int k=1;k<this->listView1->Columns->Count;k++){
//When the column matches the algorithm that was just ran, add the result
if(this->listView1->Columns[k]->Text == response->algorithmType.ToString()){
//****The line giving me trouble
this->listView1->Items[j]->SubItems[k]->Text = response->verifyResult;
//****End of troublesome line
}
}
}
}

Запуск его как есть приводит к появлению следующего всплывающего окна
listView1ErrorMessage

Мне просто нужно создать все элементы снова, а затем очистить listView1 перед добавлением «новых» предметов к нему? Или этот код можно восстановить?

1

Решение

ListView.SubItems коллекция пуста по умолчанию. Вы должны сначала добавить подпункты, используя, например, Add метод сбора подпунктов. Затем, после того как вы добавили несколько подпунктов, вы можете при необходимости изменить текст подпункта, используя его индекс.

this->listView1->Items[i]->SubItems->Add("Some text for SubItem");

Также при работе с подэлементами в коллекции используйте индекс на основе 1 для подэлементов, поскольку индекс 0 — это элемент, которому принадлежит коллекция.

this->listView1->Items[i]->SubItems[1]->Text = "Some new text";
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]