打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【转】CListCtrl删除选中行
CListCtrl选中行有两种属性情况,如果设置了Single Selection为TRUE,则只能单选,否则为多选(默认)。

方法一:

int CListCtrl::GetSelectionMark();

返回值:返回选中索引号,否则返回-1

说明:这个函数可以处理单行的情况,但是有一个缺点,它会保留你上次选中的项,所以当你单击空白的地方时,还会返回上次选中的项。因此在使用快捷键实现删除操作时需要注意这个情况,一般可以配合UINT GetItemState(int nItem,
UINT nMask) const;来判断。

单行:int nItem = m_listCtrl.GetSelectionMark();
m_listCtrl.DeleteItem(nItem);

方法二:

说明:这个可以处理单行和多行(连续)的情况

POSITION pos = m_listCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
{
TRACE(_T("No items were selected!\n"));
}
else
{
while (pos)
{
int nItem = m_listCtrl.GetNextSelectedItem(pos);
m_listCtrl.DeleteItem(nItem);
// you could do your own processing on nItem here
}
}

方法三:

说明:可以处理单行和多行的情况,个人一般用这种方法

while(m_listCtrl.GetNextItem(-1,LVNI_ALL | LVNI_SELECTED) != -1)
{
int nItem = m_listCtrl.GetNextItem(-1,LVNI_ALL | LVNI_SELECTED);
m_listCtrl.DeleteItem(nItem);
}

方法四:

说明:可以处理单行和多行的情况

for(int i = 0; i<m_listCtrl.GetItemCount(); i++)
{
if(m_listCtrl.GetItemState(i, LVNI_ALL | LVNI_SELECTED) == LVIS_SELECTED)
m_listCtrl.DeleteItem(i);
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
MFC 列表控件如何删除选中的多条数据记录
VC中ListCtrl经验总结
VC/MFC之ListCtrl控件使用经验总结(转)
CtrlList判断一个item是否被选中
Vc控件用法总结之List Control
VC中CListCtrl的双击事件处理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服