删除ListControl控件行数 可能LISTCTRL中只有2行,0 和1 。m_BranchInfo.DeleteItem(0); 调用后只剩下1行了,m_BranchInfo.DeleteItem(1); 中的参数1是个非法的INDEX了,应该再调用m_BranchInfo.DeleteItem(0); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 if (nResponse == IDOK) { m_BranchInfo.DeleteItem(0); m_BranchInfo.DeleteItem(0); }-----------自动向前移的 while(m_BranchInfo.DeleteItem(0))或者deleteAllItem() 要想删除一个列表中的一行或者多行,应该在删除之前记下所有被选中的行的Index,然后再把它们一一删除,而删除时再每删除一行,就要把余下待删除的Index减1。试试下面行不:POSITION pos = m_BranchInfo.GetFirstSelectedItemPosition(); int Count = m_BranchInfo.GetSelectedCount(); int* SelectedItem = new int[Count]; //用来保存选中的项的索引int* SelItem = SelectedItem;for( int i=0; i<Count; i++ ){ //保存选中的项的索引 *SelItem = m_BranchInfo.GetNextSelectedItem( pos ); SelItem++;}int Deletedn = 0; //记录已删除项的个数SelItem = SelectedItem;for( i=0; i<Count; i++ ){ //删除时把索引相应减小 m_BranchInfo.DeleteItem( *SelItem - Deletedn ); SelItem++; Deletedn++;}delete [] SelectedItem;我试了一下,应该可以的。只不不知道在删除之前进行了Sort操作会不会影响。因为这种做法要求先删除index小的才会对,如果担心有问题,可以把选中的项的Index选从小到大排序,然后再这样删除就应该是万无一失了。你可以再搜一下看有没有更好的办法。 可能更应该这样做:POSITION pos = m_BranchInfo.GetFirstSelectedItemPosition();int nSelectedItem;while(pos) { nSelectedItem = m_BranchInfo.GetNextSelectedItem(pos); m_BranchInfo.DeleteItem(nSelectedItem); pos = m_BranchInfo.GetFirstSelectedItemPosition();}这样就一定不会出问题了。因为每次删除一项后会重新定位已选中的项,这样每次都是在删除选的第一项而已。 虚拟机的故障我用的是VM6.5的 关于CDC::GetBoundsRect的问题 大家看看这段代码为什么运行的时候会出错? 使用ado的时候如何来检查_ConnectionPtr连接对象是否还有用(在线等待) 面对困难你们会怎样? 郁闷中... 3D视频实时采集及显示的困惑 高分求助,如何在视(FORM)中显示文本?? help me 关于ListCtrl和ComboBox的整合 VC界面实时显示问题 求助:如何让CreateCaret()使用自己画的BitMap!!!(急) IoCreateNotificationEvent为什么用这个产生内核事件对象。立刻关机???
{
m_BranchInfo.DeleteItem(0);
m_BranchInfo.DeleteItem(0);
}
-----------
自动向前移的
POSITION pos = m_BranchInfo.GetFirstSelectedItemPosition();
int Count = m_BranchInfo.GetSelectedCount();
int* SelectedItem = new int[Count]; //用来保存选中的项的索引
int* SelItem = SelectedItem;
for( int i=0; i<Count; i++ )
{
//保存选中的项的索引
*SelItem = m_BranchInfo.GetNextSelectedItem( pos );
SelItem++;
}
int Deletedn = 0; //记录已删除项的个数
SelItem = SelectedItem;
for( i=0; i<Count; i++ )
{
//删除时把索引相应减小
m_BranchInfo.DeleteItem( *SelItem - Deletedn );
SelItem++;
Deletedn++;
}
delete [] SelectedItem;我试了一下,应该可以的。只不不知道在删除之前进行了Sort操作会不会影响。因为这种做法要求先删除index小的才会对,如果担心有问题,可以把选中的项的Index选从小到大排序,然后再这样删除就应该是万无一失了。
你可以再搜一下看有没有更好的办法。
POSITION pos = m_BranchInfo.GetFirstSelectedItemPosition();
int nSelectedItem;
while(pos)
{
nSelectedItem = m_BranchInfo.GetNextSelectedItem(pos);
m_BranchInfo.DeleteItem(nSelectedItem);
pos = m_BranchInfo.GetFirstSelectedItemPosition();
}这样就一定不会出问题了。因为每次删除一项后会重新定位已选中的项,这样每次都是在删除选的第一项而已。