mfc 控件索引 分组 mfc向列表控件添加数据_mfc 控件索引 分组

1.列表框中添加数据

(1)顺序加入

dlg初始化函数中进行添加

//给列表框中添加数据
	m_listbox.AddString(_T("111"));
	m_listbox.AddString(_T("000"));
	m_listbox.AddString(_T("222"));

效果如下所示,默认是会给排序的,不是按添加顺序来的

mfc 控件索引 分组 mfc向列表控件添加数据_mfc_02

如果不想让其排序,可在属性中修改sort属性为false即可,则会按照添加顺序来从上到下显示数据

mfc 控件索引 分组 mfc向列表控件添加数据_c++_03

mfc 控件索引 分组 mfc向列表控件添加数据_mfc 控件索引 分组_04

(2)自定义插入某个位置

//自定义位置插入数据
	//第一个参数为序号
	//第二个参数为插入的数据内容
	m_listbox.InsertString(1,_T("999"));
	m_listbox.InsertString(1, _T("aaa"));

虽然都插入的是序号1的位置,但是插入之后序号就改变了再继续找序号1进行插入

 

mfc 控件索引 分组 mfc向列表控件添加数据_c++_05

2.删除列表框中的数据

(1)删除某个序列的数据,这里设置一个按钮点击事件来删除第一个数据,每点击一次就删除当前第一个数据哈

void CMFC_Test1Dlg::OnBnClickedButton12()
{
	// TODO:  在此添加控件通知处理程序代码
	//删除指定索引的数据
	//每点击一次就删除第一个列表选项
	m_listbox.DeleteString(0);
}

mfc 控件索引 分组 mfc向列表控件添加数据_c++_06

 

mfc 控件索引 分组 mfc向列表控件添加数据_mfc_07

 (2)清空所有数据,这里设置一个按钮点击事件来清空列表框中的所有数据

void CMFC_Test1Dlg::OnBnClickedButton13()
{
	// TODO:  在此添加控件通知处理程序代码

	//删除列表框中的全部数据
	m_listbox.ResetContent();

}

 

mfc 控件索引 分组 mfc向列表控件添加数据_c++_08

mfc 控件索引 分组 mfc向列表控件添加数据_mfc 控件索引 分组_09

 3.获取列表中数据的数量

//获取列表中的数据的数量并且弹出提示
	int list_num = m_listbox.GetCount();
	CString str;
	str.Format(_T("%d"), list_num);
	MessageBox(str);

 4.设置列表框选中某条数据

//设置默认选中某条数据
	m_listbox.SetCurSel(1);

 

mfc 控件索引 分组 mfc向列表控件添加数据_mfc 控件索引 分组_10

5.获得当前列表框中选中的数据序列号

//获得当前列表框中选中的数据序列号
	int idx = m_listbox.GetCurSel();

返回以0开始的选中的数据索引,如果没选中任何一条数据,则返回 -1.

6.列表框的多选模式:

刚才给大家讲解的 SetCurSel 和 GetCurSel 都是针对列表框的单选模式进行的,大家在使用其它的软件的时候也注意过有的列表框控件是支持多选的,还支持 Ctrl、Shift 键快捷操作。控件的 Selection 属性进行修改。默认是 Single,也就是单选。我们可以改成 Multiple、Extended,都是多选的意思。其中 Extended 支持 Ctrl、Shift 键操作。None:选中item,但是不高亮,只显示该item上交点(item外有矩形框)。

mfc 控件索引 分组 mfc向列表控件添加数据_数据_11

(1)设置选中多条数据

//设置选中多条数据
	m_listbox.SetSel(0);
	m_listbox.SetSel(1);
	m_listbox.SetSel(2);

mfc 控件索引 分组 mfc向列表控件添加数据_数据_12

(2)获取选中的序列号

//获得当前选中的行数
	int list_sel = m_listbox.GetSelCount();
	if (list_sel > 0){
		//新建一个变量来作为缓冲区来存放
		int *p = new int[list_sel];
		//获取选中的数据
		//第一个参数是数量,第二个参数是缓冲区
		m_listbox.GetSelItems(list_sel, p);

		for (int i = 0; i < list_sel; i++){
			//获取选中的序列号
			int i_sel = p[i];
		}
	}

7.获得选中的数据内容

//获得选中的数据内容
	CString str_list;
	//第一个参数对应序列号,第二个对应保存的变量
	m_listbox.GetText(0, str_list);