读书人

ListView删除选中Item一次只能删除一个

发布时间: 2012-05-07 12:40:40 作者: rapoo

ListView删除选中Item一次只能删除一个
我选中ListView中若干个(以3个为例)Item,我想一次删除这些选中的项,代码如下:

C/C++ code
for(int i = 0; i < ListView1 -> Items -> Count; ++i)    {    if(ListView1 -> Items -> Item[i] -> Checked)        {        if(MessageDlg("确定要删除选中项?", mtConfirmation, TMsgDlgButtons() << mbOK << mbCancel, 0) == mrOk)            ListView1 -> Items -> Item[i] -> Delete();    }    }

但是每次只能删除一个,删除选中的多个需要点多次才能删除完。看到Delphi中提示用:
C/C++ code
for   i:=ListView1.Items.Count-1   downto   0   do         if   ListView1.Items.Item[i].Selected=True   then                 begin                     ListView1.Items.Delete[i];                 end; //如果不用倒叙,那么删除一个后,Items的Count就发生改变,顺序就会产生越界错误。而倒叙却排除了这个问题。  

我试了一下,还是老问题,选中三个,若要删除这三个,需要点3次确定。


[解决办法]
if(MessageDlg("确定要删除选中项?", mtConfirmation, TMsgDlgButtons() << mbOK << mbCancel, 0) == mrOk)
放到for循环外面
[解决办法]
在队列中,删除操作应该倒序进行,先删除序号大的,再删除序号小的,否则先删除小的,后面的序号就都变了

读书人网 >C++ Builder

热点推荐