本文共 512 字,大约阅读时间需要 1 分钟。
因为如果你要删除多行的话,往往要出错。比如,我现在要删除第0行和第1行(列表的行序列是从0开始的)
m_listctrl.DeleteItem(0)m_listctrl.DeleteItem(1)
这样子是不行的
因为你删除第0行以后,下面的行会往上移,那么原来的第1行就变成了第0行,那么你再 m_listctrl.DeleteItem(1),那么删除的是原来的第2行,真麻烦,
所以,只有从下往上删,才是安全的,先删的,不会影响后面的操作
m_listctrl.DeleteItem(1)m_listctrl.DeleteItem(0)
删除时用GetFirstSelectedItemPosition/GetNextSelectedItem遍历是不行的,因为删除后POSITION有问题。要倒过来,从后向前删。类似这样:
for (iItem = list.GetItemCount() - 1; iItem >= 0; iItem--) { if (list.GetItemState(iItem, LVIS_SELECTED) == LVIS_SELECTED) list.DeleteItem(iItem); }转载地址:http://akloi.baihongyu.com/