有趣生活

当前位置:首页>科技>mfc对话框添加滑动控件MFC组合框和列表框控件

mfc对话框添加滑动控件MFC组合框和列表框控件

发布时间:2026-07-25阅读(1)

导读界面绘制编辑框ID:IDC_EDIT_INPUT_STRING,绑定数值类型变量:CStringm_edit_input_string;添加当前项按钮ID:....界面绘制

编辑框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种方法
视频讲解

Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图