CListCtrl控件删除多个选中行时问题的解决

来源:互联网 发布:java面向对象测试题 编辑:程序博客网 时间:2024/05/18 23:54

只需注意以下一点:

/*每删除一行时,删除行之后的行序号会整体前移一位;也就是说,除非从后向前删除,否则会出错。*/


以下给出两种解决方法:

for(int i = m_List.GetItemCount()-1; i >= 0; i--)         {              if( m_List.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED )              {                   m_List.DeleteItem(i);             }        }  

二种方法:

POSITION pos = m_List.GetFirstSelectedItemPosition();         if (pos == NULL)              {AfxMessageBox("请选中要删除的行!");return;}         else         {              while (pos)              {                   int nItem = m_List.GetNextSelectedItem(pos);          m_List.DeleteItem(nItem);/*如果不是这样写的话,会删错位的,比如你选了1,2两行,当删第一行后,如果跟你上面代码一样,第二次删会删到原先的第三行去, 这个语句重新计算选中行在删掉一条后的listctl中位置.*/pos = m_List.GetFirstSelectedItemPosition();}         }


原创粉丝点击