如何让ListCtrl的CheckBox只有一个处于选中状态

 我来答
地瓜说机
2015-01-27 · TA获得超过2.9万个赞
知道大有可为答主
回答量:2.3万
采纳率:91%
帮助的人:1.2亿
展开全部
1、
要让ListCtrl的每一行的第一列为CheckBox,需要做如下设置:
listCtrl.SetExtendedStyle(m_listCtrl.GetExtendedStyle()|LVS_EX_CHECKBOXES);

2、
为了限制ListCtrl只能有一行的CheckBox处于选中状态,则需要:
响应ListCtrl的 LVN_ITEMCHANGED 消息:
例如:
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LC_CONFIG, OnLvnItemchangedLcConfig)

void CRestorePage::OnLvnItemchangedLcConfig(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
if(m_LcConfig.GetCheck(pNMLV->iItem))
UnCheckOtherItem(m_LcConfig, pNMLV->iItem);
*pResult = 0;
}

其中UnCheckOtherItem(...)的代码如下
void CRestorePage::UnCheckOtherItem(CListCtrl& listCtrl, int index)
{
for (int i=0;i<listCtrl.GetItemCount();++i)
{
if(i == index)
continue;
listCtrl.SetCheck(i,FALSE);
}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式