关于MFC在ListControl中删除选中行

2024-12-18 20:46:56
推荐回答(2个)
回答1:

哥跑了下你代码有问题啊,
void CAddress_ListView::OnSdelete()
{
POSITION p=m_address_list.GetFirstSelectedItemPosition(); //获取首选中行位置
while (p)
{
int nSelected=m_address_list.GetNextSelectedItem(p); //获取选中行的索引
m_address_list.DeleteItem(nSelected); //根据索引删除
p = m_address_list.GetFirstSelectedItemPosition(); //这里跟你不一样,如果不是这样写的话,会删错位的,比如你选了1,2两行,当删第一行后,如果跟你上面代码一样,第二次删会删到原先的第三行去, 这个语句重新计算选中行在删掉一条后的listctl中位置
}
POSITION pos = m_address_list.GetFirstSelectedItemPosition();//这行哥删了
int m_nIndex = m_address_list.GetNextSelectedItem(pos);//这行哥删了

UpdateData(FALSE); // 哥把这行删了也是可以的

}

回答2:

百度了一下 至少三个网页的方法是错的 我真是呵了一呵又一呵 我呵呵呵呵呵
看看这位高手的代码 才是对的 真不知道这些人怎么想的 错都能错成一样 太无语了
http://blog.csdn.net/testcs_dn/article/details/7612410