1

CListCtrl の項目テキストでもある Text を持つ CString を取得しました。例えば:

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 に答える