列表框清屏/CListBox清空

CListBox自带方法:

MyListBox->ResetContent();

CListBox用法:

关联一个变量m_List,m_List.AddString("test");

删除一个字符串
int DeleteString( UINT nIndex );

例如:

m_listbox.DeleteString(5);

插入一个字符串

int InsertString( int nIndex, LPCTSTR lpszItem);

例如:

m_listbox.InsertString(2,L"00-001-00011");

清空所有项目

void ResetContent( );

例如;

m_listbox.ResetContent();

 其他方法:

网上查到了这样的方法:  

while(pmyListBox->GetCount())    

pmyListBox->DeleteString( 0 );

还查到了这样的方法:

 int nListCount=pMyListBox->GetCount();

for (int i=0;i < nListCount;i++)

{    

   pmyListBox->DeleteString(0);//循环次数等于总个数,每次都删除第一个,一样没有清空

}

 

最容易想到的删除方式,的确很简单!错!

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,当你要删除的序号大于最大索引值时是无法删除成功的!

CListBox如何正确删除列表中全部内容 - dusulin888的专栏 - CSDN博客 http://blog.csdn.net/dsl_sz/article/details/18088213

原文地址:https://www.cnblogs.com/wxl845235800/p/7445492.html