最容易想到的删除方式,的确很简单!
int Count = m_ListBox.GetCount();
for (int i=0 ;i<=Count ; i++)
{
m_ListBox.DeleteString(i);
}
试想能完全删除ListBox中的所有行记录吗,错,只能删除一半, 为什么?很诡异的事件
正确的删除方法:
int Count = m_ListBox.GetCount();
for (int i=Count ;i>=0 ; i--)
{
m_ListBox.DeleteString(i);
}
完全删除!
是否已经明白了呢?
不难猜想CListBox 在删除一条记录的时候,已经把记录数重新调整过,当你删除第一条后,后面条目的索引值其实已经发生了改变,此时列表中
的最大索引值变成了Count - 1,当你要删除的序号大于最大索引值时是无法删除成功的!