要求输入学生信息,点击“确定”显示在列表框中,点击“显示成绩”弹出窗口显示学生成绩,点击“删除”删除列表框中的选中条。
一、界面设计
上面这个大白块是 列表框 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