要求输入学生信息,点击“确定”显示在列表框中,点击“显示成绩”弹出窗口显示学生成绩,点击“删除”删除列表框中的选中条。

 一、界面设计

上面这个大白块是 列表框 list box

二、添加

为“确定”按钮添加代码,要求将学生信息显示在列表框中。

void COOPEx2Dlg::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
//	CDialogEx::OnOK();

	UpdateData(true);//实时更新

	CString str;
	str = (CString) "姓名:" + m_Name +(CString)", 学号:" + m_Sid + (CString)", 成绩:" + this->m_Value;//需要强制类型转换
	this->m_ListCon.AddString(str);//显示在列表框里
}

 三、为列表框添加事件处理程序

为列表框添加事件处理程序,目的是返回列表框选择项的索引。

在列表框上右键单击,选择“添加事件处理程序”,选择“LBN_SELCHANGE”,编辑代码。

 

为该事件添加:

void COOPEx2Dlg::OnLbnSelchangeList1()
{
    m_Listid = m_ListCon.GetCurSel();//返回列表框内的当前选行的索引(int型)
}

这时会发现m_Listid下有红线,因为它没有定义,现在我们点开类视图,定义int型变量m_Listid,红线就消失了。

四、删除

双击“删除”按钮,添加代码,实现可以删除列表框中的当前选中项。

void COOPEx2Dlg::OnBnClickedButton3()
{
    this->m_ListCon.DeleteString(this->m_Listid);
}

 五、显示成绩

要求选中某一行后,通过点击“显示成绩”,只将该学生的成绩通过 MessageBox 弹出显示出来。
 
void COOPEx2Dlg::OnBnClickedButton4()
{
	// TODO: 在此添加控件通知处理程序代码

	CString s, ans;
	int len,id;

	m_ListCon.GetText(m_Listid, s);///用字符串s获取本条成绩全部信息
	len = m_ListCon.GetTextLen(m_Listid);///这条信息的长度
	id = s.Find(_T("成绩"));///字符串查询 返回下标
	int len1 = len - id + 1;
	ans = s.Right(len1);///从右侧截串
	MessageBox(ans,MB_OK);///弹出窗口

}

六、结果图

如果不需要列表框对输入的学生信息自动排序,可以修改列表框的sort属性,改为false