龙空技术网

MFC组合框和列表框控件,数据插入和删除

黑猫编程 591

前言:

目前各位老铁们对“c语言删除字符串中的空格并输出”大体比较关注,我们都需要学习一些“c语言删除字符串中的空格并输出”的相关知识。那么小编同时在网上汇集了一些关于“c语言删除字符串中的空格并输出””的相关知识,希望各位老铁们能喜欢,看官们快快来学习一下吧!

界面绘制

编辑框ID:IDC_EDIT_INPUT_STRING,绑定数值类型变量:CString m_edit_input_string;

添加当前项按钮ID:IDC_BUTTON_ADD_STRING

删除选中项按钮ID:IDC_BUTTON_DEL_STRING

组合框ID:IDC_CBX,绑定控件类型变量:CComboBox m_cbx;

列表框ID:IDC_LST,绑定控件类型变量:m_lstbox;

列表框和组合框都取消默认排序,按照元素添加先后顺序排序。

列表框设置为Extended模式,可以通过按住Ctrl键选择多项元素。

添加元素

在编辑框中输入字符串,点击添加当前项按钮,分别将字符串添加至组合框和列表框,并设置当前选中项为新添加的元素。

添加之前,判断是否为空,且防止出现输出连续多个空格情况,使用Trim()方法去除字符串左右两端空格。

还需要进行去重判断,如果重复则不会添加至组合框。去重可以使用STL set集合,也可以直接使用FindString()方法查找是否已经存在过该元素。

void CDemoDlg::OnBnClickedButtonAddString(){	UpdateData(TRUE);		m_edit_input_string.Trim();	if (m_edit_input_string.IsEmpty()) {		AfxMessageBox(_T("请先输入内容"));		return;	}	int idx = -1;	if (m_cbx.FindString(idx, m_edit_input_string) >= 0) {		AfxMessageBox(_T("请不要重复插入相同值"));		return;	}	m_cbx.AddString(m_edit_input_string);	m_cbx.SetCurSel(m_cbx.GetCount() - 1);	m_lstbox.AddString(m_edit_input_string);	m_lstbox.SetCurSel(m_lstbox.GetCount() - 1);	m_edit_input_string = _T("");	UpdateData(FALSE);}
删除选中项

对于组合框,每一次只删除当前选中的项目。如果删除最后一个项目,当前选中项设置为删除后的最后一项,即长度-1;如果删除的不是最后一项,后面的元素会自动上移,则当前选中项还是设置为删除之前的索引。

int cbx_idx = m_cbx.GetCurSel();if (~cbx_idx) {	m_cbx.DeleteString(cbx_idx);	if (cbx_idx == m_cbx.GetCount()) m_cbx.SetCurSel(m_cbx.GetCount() - 1);	else m_cbx.SetCurSel(cbx_idx);}

对于列表框,可以选择多项内容,获取选择的元素下标,再通过for循环从后向前遍历删除选中的元素。

int lstbox_count = m_lstbox.GetCount();CArray<int> lstbox_sel_idxs;lstbox_sel_idxs.SetSize(lstbox_count);for (int i = 0; i < lstbox_count; i++) lstbox_sel_idxs[i] = -1;m_lstbox.GetSelItems(lstbox_count, lstbox_sel_idxs.GetData());for (int i = lstbox_sel_idxs.GetCount() - 1; i >= 0; i--) {	output_string.Format(_T("%d\n"), lstbox_sel_idxs[i]);	OutputDebugString(output_string);	if(~lstbox_sel_idxs[i])		m_lstbox.DeleteString(lstbox_sel_idxs[i]);}
相关推荐MFC统计字符串长度和字符数MFC控件访问7种方法视频讲解

视频加载中...

标签: #c语言删除字符串中的空格并输出