1

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

CString m_SearchThisItemText = _T("Banana");

在我的 CListCtrl

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

现在我想找出文本在哪个索引上。

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

我也试过这个

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

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

我希望你能理解我的问题。

4

2 回答 2

6

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

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;
    }
}
于 2013-11-05T13:14:12.770 回答
1

如果您的意思是您有一个包含多列的列表视图,并且您想在除第一列之外的其他列中进行搜索,那么FindItem将无济于事。您必须自己显式编写查找代码。您必须遍历列表中的所有行,并且对于行调用的每一列,GetItemText并将您获得的内容与您拥有的文本进行比较。

于 2013-11-05T13:10:47.497 回答