为什么ListBox执行DeleteString结果删的不对?该怎么处理

为什么ListBox执行DeleteString结果删的不对?
DDX_LBString(pDX, IDC_LIST1, m_Username);
C/C++ code

UpdateData();
UINT delstr = 0;
CString str;
CStdioFile fileb(_T("D:\\\\DATAT\\index.dat"),CFile::modeRead);
while(fileb.ReadString(str))
  {
    if (str==m_Username)
    {
        ((CListBox*)GetDlgItem(IDC_LIST1))->DeleteString(delstr);
        break;
    }
    ++delstr;
  }
UpdateData(FALSE);


例如ListBox里有
1
2
3
4
我想删除2,但是执行完毕以后ListBox里面的项目会变成
1
2
4


------解决方案--------------------
你可以调试一下啊,看看到执行DeleteString()时delstr的值是多少啊?
根据你的结果,可能delstr的值可能是2,则把第三行删除了。

可能你的index.dat文件的开头有个空行,或其他原因导致,文件中的行跟ListBox中的行对应不上了。