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循环外面
[解决办法]
在队列中,删除操作应该倒序进行,先删除序号大的,再删除序号小的,否则先删除小的,后面的序号就都变了