近来在学MFC,使用了ListBox控件显示数据,通过自己实践加网上查阅资料,初步掌握了其使用。在此主要记录如何修改其中的数据。
(1)如何修改数据
ListBox修改数据需要取出要修改的词条,删除,然后重新添加一个新的词条。例如:
CListBox *pList = (CListBox*)GetDlgItem(IDC_LISTBOX); //获取控件指针 int nIdex = pList->GetCurSel(); //获取鼠标选中条目 pList->DeleteString(nIdex); //删除该条目 CString str; pList->InsertString(nIdex,str);//插入str
此外,值得注意的是,如果要删除很多条目,而且注重顺序的话。一定要从大序号往小序号开始删,例如原始数据有1~40条,要删除1~5条,那就是先删5,再删4...最后删1。如果从1开始删,1删除后,条目只剩下39条,此时再删2对应着就是原来的3了,因此条目2会保留,最终导致删除错误。
(2)如何保证在修改数据时界面不一直刷新
问题就是在修改数据时,控件会一直刷新,界面不断闪烁,看着很不舒服。
解决办法就是修改数据前,禁止控件刷新,修改完成后,再刷新一次。
m_ListBox.LockWindowUpdate();//禁止本listbox刷新。 //添加数据 for(int i=0;i<9999;i++) { m_ListBox.AddString("Test"); } m_ListBox.UnlockWindowUpdate();