Member 13089825 Ответов: 1

Получение сведений о listview


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

Что я уже пробовал:

я попробовал с getitemtext(0,0)(например), но он ничего не показывает

Member 13089825

спасибо за ваш ответ
извините, что не получил от вас ответа,
Мои требования-VC++ вместе с MFC
не могли бы вы помочь здесь как я могу получить выбранный текст из listview

1 Ответов

Рейтинг:
1

Jochen Arndt

Это зависит от типа выделения (одна или несколько строк).

Чтобы получить номера выбранных строк, используйте В Разделе Clistctrl::GetSelectedCount() [^]. Если счетчик не равен нулю, вызовите

prevItemIndex = GetNextItem(prevItemIndex, LVNI_SELECTED);
подсчет времени (или до тех пор, пока не будет возвращен -1), где prevItemIndex изначально -1.

В качестве альтернативы используйте GetFirstSelectedItemPosition() и GetFirstSelectedItemPosition().

Если в вашем списке отчетов не установлен полный выбор строк, вы должны проверить каждый столбец выбранных строк с помощью GetItem() и проверка там состояния выбора:
LVITEM item;
item.iItem = prevItemIndex;
item.mask = LVIF_STATE;
item.stateMask = LVIS_SELECTED;
GetItem(&item);
if (item.state & LVIS_SELECTED)
{
    // column is selected
}
Передайте возвращаемый индекс(ы) в GetItemText() чтобы получить текст.


Если вы хотите отреагировать на изменение выбора (например, обновить строку состояния), обработайте Код уведомления LVN_ITEMCHANGED (Windows)[^]:
// Example for CListView derived class
// Message map entry:
ON_NOTIFY_REFLECT(LVN_ITEMCHANGED, OnLvnItemChanged)

void CMyListView::OnLvnItemChanged(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
    // Selection state has changed when LVIF_STATE is set and
    //  LVIS_SELECTED state differs
    if ((pNMLV->uChanged & LVIF_STATE) && ((pNMLV->uOldState ^ pNMLV->uNewState) & LVIS_SELECTED))
    {
        // pNMLV->iItem is the item and pNMLV->iItem the column
        //  for which the selection has changed
    }
    *pResult = 0;
}