【发布时间】:2011-03-14 09:37:17
【问题描述】:
嗨 我使用有 20 个项目的 ClistCtrl,我想限制所选项目的数量。 例如只能选择 10 个项目。 我该怎么做? 谢谢你的帮助。
【问题讨论】:
嗨 我使用有 20 个项目的 ClistCtrl,我想限制所选项目的数量。 例如只能选择 10 个项目。 我该怎么做? 谢谢你的帮助。
【问题讨论】:
您必须处理 LVN_ODSTATECHANGED 通知消息并在每次 LVIS_SELECTED 状态更改时计算所选项目的数量
谢谢
【讨论】:
所以我写了这段代码。它应该工作。只需为列表创建一个事件处理程序
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 控制变量
【讨论】:
此类功能没有内置功能。您必须为此编写您的代码。也许您可以找到另一种方法来做到这一点,例如拥有一个源列表和一个“选择列表”。您将项目从第一个复制/移动到第二个,但您不允许用户将超过 10 个项目放入目标列表中。
【讨论】: