如何让ListCtrl的CheckBox只有一个处于选中状态
2017-03-25 10:17
585 查看
1、要让ListCtrl的每一行的第一列为CheckBox,需要做如下设置:
[cpp] view plain copy print?
listCtrl.SetExtendedStyle(m_listCtrl.GetExtendedStyle() | LVS_EX_CHECKBOXES);
2、为了限制ListCtrl只能有一行的CheckBox处于选中状态,则需要响应ListCtrl的 LVN_ITEMCHANGED 消息:
[cpp] view plain copy print?
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(…)的代码如下:
[cpp] view plain copy print?
void CRestorePage::UnCheckOtherItem(CListCtrl& listCtrl, int index) { for (int i = 0; i<listCtrl.GetItemCount(); ++i) { if (i == index) continue; listCtrl.SetCheck(i, FALSE); } }
转自:http://www.cnblogs.com/strinkbug/archive/2008/01/05/1027332.html
[cpp] view plain copy print?
listCtrl.SetExtendedStyle(m_listCtrl.GetExtendedStyle() | LVS_EX_CHECKBOXES);
listCtrl.SetExtendedStyle(m_listCtrl.GetExtendedStyle() | LVS_EX_CHECKBOXES);
2、为了限制ListCtrl只能有一行的CheckBox处于选中状态,则需要响应ListCtrl的 LVN_ITEMCHANGED 消息:
[cpp] view plain copy print?
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; }
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(…)的代码如下:
[cpp] view plain copy print?
void CRestorePage::UnCheckOtherItem(CListCtrl& listCtrl, int index) { for (int i = 0; i<listCtrl.GetItemCount(); ++i) { if (i == index) continue; listCtrl.SetCheck(i, FALSE); } }
void CRestorePage::UnCheckOtherItem(CListCtrl& listCtrl, int index) { for (int i = 0; i<listCtrl.GetItemCount(); ++i) { if (i == index) continue; listCtrl.SetCheck(i, FALSE); } }
转自:http://www.cnblogs.com/strinkbug/archive/2008/01/05/1027332.html
相关文章推荐
- MFC如何让ListCtrl的CheckBox只有一个处于选中状态
- 如何让ListCtrl的CheckBox只有一个处于选中状态
- 如何让ListCtrl的CheckBox只有一个处于选中状态
- 如何让ListCtrl的CheckBox只有一个处于选中状态
- 如何设置其它进程中listctrl控件CHECKBOX的选中状态
- jQuery如何设置checkbox选中状态
- Struts中如何设置CheckBox为选中状态
- Tabs初始化时如何让特定的tab处于选中状态
- 如何用jquery实现checkbox点选一个选中其他,取消一个取消其他
- 用JSF实现页面刷新后,checkbox仍处于选中状态
- 如何使@Html.CheckBoxFor默认为选中状态
- vc++如何使复选框处于选中状态
- winform如何实现一个窗体显示后,其他的窗体处于不可编辑状态
- 如何在griddata分页保存每页先前checkbox的选中状态?
- html中<checkbox>标签用法解析及如何设置checkbox复选框的默认选中状态
- jquery 判断checkbox 是否选中和如何动态选中一个checkbox
- asp.net 如何让DropDownList的某一项处于选中状态
- 如何记录ListView滚动后CheckBox保持选中状态以及当全选后让滚动出来的item也被选中
- solidworks二次开发学习(2)如何选中一个草图并遍历草图中的所有直线(非草图编辑状态)
- 在做报文编辑时选择一个树节点时文本框老保持不了选中状态,如何解决的