ListCtrl怎么实现选中多行删除,不是全部啊

Lindsay 2011-10-07 06:00:33
我想点击鼠标左键选中一行,然后摁住ctrl后再点击其他的行,都会高亮标记,然后再点击右键删除,或者有个按钮删除
...全文
720 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lindsay 2012-10-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

POSITION pos = pListCtrl.GetFirstSelectedItemPosition();
while (pos != NULL)
{
int nItem = pListCtrl.GetNextSelectedItem(pos);
pListCtrl.DeleteItem(nItem);
pos = pListCtrl.GetFirstSelectedItemPo……
[/Quote]感谢
shitaup 2012-09-29
  • 打赏
  • 举报
回复
POSITION pos = pListCtrl.GetFirstSelectedItemPosition();
while (pos != NULL)
{
int nItem = pListCtrl.GetNextSelectedItem(pos);
pListCtrl.DeleteItem(nItem);
pos = pListCtrl.GetFirstSelectedItemPosition();
}
yyps 2011-10-09
  • 打赏
  • 举报
回复
listctrl 控件 纯属一个逻辑问题的控件,没啥难的,仔细想想就没问题,
samuellei 2011-10-08
  • 打赏
  • 举报
回复
int iRowSelected = m_list.GetSelectedCount();
if(iRowSelected == 0)
{
return;
}
int iRowNum = m_list.GetItemCount();
for(int i = iRowNum - 1; i >= 0; i--)
{
if(m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED)
{
m_list.DeleteItem(i);
}
}
luckytwo888 2011-10-08
  • 打赏
  • 举报
回复
int i=0;
while(i<m_listctrl.GetItemCount())
{
if(m_listctrl.GetCheck(i))
{
m_listctrl.DeleteItem(i);

}
i++;

}
luckytwo888 2011-10-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 luckytwo888 的回复:]
在listctrl控件所属的类中的OnInitDialog()函数中,增加该语句

m_listctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES);


点击记录的复选框,可以实现多选。
然后在"删除"按钮的单击响应时件的函数中,添加该代码:
int k=0;
while(k<……
[/Quote]

int k=0;改为 int i=0;
luckytwo888 2011-10-08
  • 打赏
  • 举报
回复
在listctrl控件所属的类中的OnInitDialog()函数中,增加该语句

m_listctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES);


点击记录的复选框,可以实现多选。
然后在"删除"按钮的单击响应时件的函数中,添加该代码:
int k=0;
while(k<m_listctrl.GetItemCount())
{
if(m_listctrl.GetCheck(i))
{
m_listctrl.DeleteItem(i);

}
k++;

}
ndy_w 2011-10-07
  • 打赏
  • 举报
回复
多选默认属性已经支持了。
删除时用GetFirstSelectedItemPosition/GetNextSelectedItem遍历是不行的,因为删除后POSITION有问题。要倒过来,从后向前删。类似这样:
for (iItem = list.GetItemCount() - 1; iItem >= 0; iItem--)
{
if (list.GetItemState(iItem, LVIS_SELECTED) == LVIS_SELECTED)
list.DeleteItem(iItem);
Gloveing 2011-10-07
  • 打赏
  • 举报
回复
多次调用CListCtrl::DeleteItem

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧