大家好,又见面了,我是全栈君。
下面是一个button(按钮)的触发事件,按钮按下检测list control(列表)控件是否有选中的行,把选中的删除。(m_list 是list control 的变量名)
void CListDis::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
int iItem;
BOOL flag;
flag = false; // 判断标志,判断是否有选中行
for (iItem = m_list.GetItemCount() - 1; iItem >= 0; iItem--) // 获取列表的行数,进行循环判断
{
//m_list.GetItemState(iItem,LVIS_SELECTED)
if (LVIS_SELECTED == m_list.GetItemState(iItem, LVIS_SELECTED)) //选中行的判断
{
flag = true;
CString cs;
cs.Format(TEXT("删除当前选中的第%d行"), iItem+1);
MessageBox(cs);
m_list.DeleteItem(iItem);
// 在这里面进行更新容器以及更新文件
list<user>::iterator iter = file.users.begin();
for (int i = 0; i != iItem; iter++, i++);
file.users.erase(iter);
file.WriteUsers(file.users);
MessageBox(TEXT("删除成功"));
}
}
// 在没有选中行的情况下,给出一个提示
if (!flag) {
MessageBox(TEXT("当前好像什么都没有选中喔"), TEXT("删除失败"));
}
}
设置行选中还需要把把list control 的 Always show selection 属性修改为 True,默认情况下False。
m_list.SetFocus(); // 获取焦点在列表上面
// 设置第i行为选中的状态
m_list.SetItemState(i, LVNI_FOCUSED | LVIS_SELECTED, LVNI_FOCUSED | LVIS_SELECTED);
m_list.SetItemState(i, 0, -1); // 把第i行设置为没有选中的状态
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/115093.html原文链接:https://javaforall.cn
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有