MFC限制ClistCtrl中的选定项目

时间:2011-03-14 09:37:17

标签: c++ winapi mfc clistctrl

您好 我使用ClistCtrl有20个项目,我想限制所选的项目编号。 例如,只能选择10个项目。 我怎么能这样做? 谢谢你的帮助herzl。

3 个答案:

答案 0 :(得分:1)

每次LVIS_SELECTED状态发生变化时,您必须处理LVN_ODSTATECHANGED通知消息并计算所选项目的数量

由于

答案 1 :(得分:1)

所以我写了这段代码。它应该工作。只需为列表

创建一个事件处理程序
void CDatenbankView::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
{
    int SelctedItems;
    SelctedItems = 0;
    int Index;

    LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);

    for (Index = 0; Index < m_List.GetItemCount(); ) //Check every Item
    {
        if (m_List.GetItemState (Index, LVIS_SELECTED) == LVIS_SELECTED) //Checks if it is selected
        {
            if (SelctedItems > 10) 
            {
                MessageBox (_T("Cant select more than 10 Items"));
                for (Index = 0; Index < m_List.GetItemCount(); )
                {
                    m_List.SetItemState (Index, ~LVIS_SELECTED, LVIS_SELECTED);
                    Index++;
                }
                break;
            }
            else
            {
                SelctedItems++;
            }
        }
        Index++;
    }
    *pResult = 0;
}

m_List是我对CListCtrl的控制变量

答案 2 :(得分:0)

此功能没有内置功能。你必须为此编写我们的代码。也许你可以找到另一种方法,比如拥有一个源列表和一个“选择列表”。您可以将项目从第一个复制/移动到第二个,但是您不允许用户将超过10个项目放入目标列表。