首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

ListView删除选中Item一次只能删除一个解决办法

2012-05-07 
ListView删除选中Item一次只能删除一个我选中ListView中若干个(以3个为例)Item,我想一次删除这些选中的项,

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

热点排行