关键点
在列表框生成后需要向其中加入或是删除行,可以利用:
int AddString( LPCTSTR lpszItem )添加行,
int DeleteString( UINT nIndex )删除指定行,
int InsertString( int nIndex, LPCTSTR lpszItem )将行插入到指定位置。
void ResetContent( )可以删除列表框中所有行。
通过调用int GetCount( )得到当前列表框中行的数量。
实现过程
属性设置 Sort:False Selection:Multiple //初始化部分代码 //GetDlgItem(IDC_EDIT1)->SetFocus();//如果无效果,将edit的 ID Index(Ctrl+D)设置为1 //向列表框中插入文本,手动将默认的排序功能去掉sort m_ctrl_listbox1.AddString("A"); m_ctrl_listbox1.AddString("BB"); m_ctrl_listbox1.AddString("CCC"); m_ctrl_listbox1.AddString("DDDD"); void CProject03Dlg::OnButton1() { // TODO: Add your control notification handler code here //添加字符串到列表框1 CString str; m_ctrl_edt1.GetWindowText(str); //添加的字符串不能为空 UpdateData(FALSE); //如果nStartAfter为-1,从头查找整个列表框 //这里C++把a和A当成一样的字符了,如何让它区别大小写呢 int nIndex =m_ctrl_listbox1.FindStringExact(-1,str); if ( nIndex != -1 ) { MessageBox("项目已存在!"); return;//Do Nothing } if ( !str.IsEmpty() ) { //去掉最左端和最右端的空格 str.TrimLeft(); str.TrimRight(); m_ctrl_listbox1.AddString(str); m_ctrl_edt1.SetWindowText(""); m_ctrl_edt1.SetFocus(); } else { MessageBox("字符不能为空!"); } } void CProject03Dlg::OnButton2() { //添加选中的项 CString str; for (int i=0; i<m_ctrl_listbox1.GetCount(); i++) { if (m_ctrl_listbox1.GetSel(i)) { m_ctrl_listbox1.GetText(i, str); m_ctrl_listbox2.AddString(str); // m_ctrl_listbox1.DeleteString(i);//添加并删除,最后一个没删除掉 } } } void CProject03Dlg::OnButton3() { //删除选中的项目 for (int i=m_ctrl_listbox1.GetCount()-1; i>-1; i--) { if (m_ctrl_listbox1.GetSel(i)) { m_ctrl_listbox1.DeleteString(i); } } } void CProject03Dlg::OnButton5() { //全部添加并清空已有的部分 CString str; for (int i=0; i<m_ctrl_listbox1.GetCount(); i++) { m_ctrl_listbox1.GetText(i, str); m_ctrl_listbox2.AddString(str); } m_ctrl_listbox1.ResetContent(); } |
图
备注
相关链接