获取 MFC CListCtrl 中项目文本的索引

2022-01-12 00:00:00 c++ mfc clistctrl

我有一个带有文本的 CString,它也是我的 CListCtrl 的项目文本.例如:

I've got a CString with a Text that also is an Item Text of my CListCtrl. For example:

CString m_SearchThisItemText = _T("香蕉");

在我的 CListCtrl 中

And in my CListCtrl

m_List.SetItemText (1, 1, _T ("Banana"));

现在我想知道文本在哪个索引上.

Now I want to find out, on which Index the Text is.

CListCtrl::FindItem不工作.它只搜索项目的名称,而不是文本.

CListCtrl::FindItem doesnt work. It only searches the name of the Item, not the Text.

我也试过了

for (Index= 0; dlg.GetSearchContentText () == m_List.GetItemText (Index, Spalte); Index++)// HIER IST NOCH EIN FEHLER.
{
    if (dlg.GetSearchContentText () == m_List.GetItemText(Index, Spalte))
    {
        m_List.SetItemState (Zeile, LVIS_SELECTED, LVIS_SELECTED); 
        m_List.SetFocus();
    }
}

但它不起作用.它停在索引 0

But it doesnt work. It stops at Index 0

谁能帮助我,如何找出文本是哪个项目.

Can anyone help me, how to find out on which Item the text is.

希望你能理解我的问题.

I hope you understand my question.

推荐答案

迭代所有项目并在你想要的列中搜索:

Iterate all the items and search in the column you want:

int nCol = 1;    // to search in the second column (like your question)
CString m_SearchThisItemText = _T("Banana");

for (int i = 0; i < m_List.GetItemCount(); ++i)
{
    CString szText = m_List.GetItemText(i, nCol);
    if (szText == m_SearchThisItemText)
    {
        // found it - do something
        break;
    }
}

相关文章