当前位置:首页>科技>mfc对话框添加滑动控件MFC组合框和列表框控件
发布时间:2026-07-25阅读(1)

编辑框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]);}
上一篇:牡丹区特色文化
Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图