下面是從一個CListBox中刪除字符串的方法
每次刪除一條,代碼如下:
- int nCurSel = lst_message.GetCurSel();
- if(nCurSel== LB_ERR){
- MessageBox(_T("請選擇要刪除的條目"),_T("ERROR"));
- }else{
- lst_message.DeleteString(nCurSel);
- }
刪除多條:
- int nCount = lst_message.GetSelCount();
- CArray<int,int> aryListBoxSel;
-
- aryListBoxSel.SetSize(nCount);
- lst_message.GetSelItems(nCount, aryListBoxSel.GetData());
- for(int i=nCount-1;i>=0;i--)
- {
- lst_message.DeleteString(aryListBoxSel[i]);
- }
單條刪除沒什麼可說的,主要說一下多條刪除:
主要思路:記錄當前選中記錄的序號,循環刪除每一條記錄
實現過程:
1.首先定義nCount,表示選中的條數;
2.定義CArray用來記錄別選中的序號;
3.設置CArray的大小為選中記錄的條數;
4.為CArray進行復制
5.循環刪除每一項
注意:關鍵在於第五條中,刪除的時候一定要從大到小的刪除,否者將會導致程序結果的錯誤;
原因:若從小到大的刪除,每刪除一條記錄原來序號的位置會發生變化,這樣在刪除多條時,會有一條已選擇的數據無法刪除。