引言:
在上一篇博文中,我们简单的学习了ListBox控件的项添加、项的全部清除。接上一篇的尾巴,我们将在这篇博文中,介绍一些ListBox的小技巧吧,比如,获取选中项、删除选中项。
正文:
首先,我们打开VS2008,选择新建一个C++项目,项目名称用MFC_Listbox吧,当然是基于MFC的智能设备应用程序项目啦。来到向导窗口,选择WM5平台的SDK足矣,然后设置项目基于对话框,其他保持默认,一路Next即可。我们先打开资源视图,看到我们需要把用户界面设计成如下效果:
一个Button控件,Caption设置为Show,一个CEdit控件,为其添加一个变量:txtEdit。一个ListBox控件,为其添加一个变量:lbox。大致的界面就是如此,当然,你感兴趣的话,可以研究一下ListBox的属性,很有意思。在此就暂不作深入了。
Ok,界面画好了之后,我来介绍一下程序的逻辑吧,通过编程在程序初始化时,往ListBox中插入三个Item(使用AddString函数),当用户选中一项之后,点击按钮Show,那么被选中的Item的内容就会显示在Edit控件中。简单吧~:>
好了,我们下面针对两个主要过程来写代码:
1、程序初始化:
首先,我们要在程序开始时,就填充这个ListBox,自然而然的,我们会找到MFC_ListBoxDlg.cpp : 实现文件中,那个由系统自动生成的函数:
BOOL CMFC_ListBoxDlg::OnInitDialog(),显而易见的,函数内部已经告知我们可以添加自己定义的初始化代码,正合我意嘛,不客气了,直接往此函数中,添加我们的代码如下:
BOOL CMFC_ListBoxDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
lbox.AddString(L " Test1 " );
lbox.AddString(L " Test2 " );
lbox.AddString(L " Test3 " );
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
看到了吧,那三行lbox.AddString("xxx")就是我们的初始化代码。这样,在程序运行之后,ListBox中就被填充了这样三个项。
2、Show按钮点击处理程序:
这里,我们需要为Show按钮添加事件处理程序,添加方法如下图:右键单击Show按钮后,选择“添加事件处理程序”即可
后面按照向导,默认即可。之后,来到了源代码编辑页面,我们往这个函数中添加如下代码:
void CMFC_ListBoxDlg::OnBnClickedButton1()
{
CString strSelect ; // 设置一个字符串变量,用于准备获取ListBox中的选中项
INT nIndex = 0 ; // 用于指定被选中项索引号的INT变量
nIndex = lbox.GetCurSel(); // 获取ListBox中选中项的索引号
lbox.GetText(nIndex,strSelect); // 将选中项索引号传入GetText函数中,把选中项内容赋给strSelect变量
txtEdit.SetWindowText(strSelect); // 显示选中项的内容
}
大家可以看到,通过ListBox的GetCurSel()方法,获取当前选中的项的索引,返回值为INT,然后,用GetText()函数,获取特定索引的内容。
最终,把选中项内容赋值给Edit控件,通过SetWindowText()方法。
至此,我们就完成了获取选中项的操作。当然,之前不是说了么,如何删除选中项呢?很简单,注意到,ListBox中有一个DeleteString()函数,而传入的参数恰好是项的索引值,这不就是那个nIndex吗?简单了。
我们修改Show按钮的代码如下,即可完成选中项的删除:
void CMFC_ListBoxDlg::OnBnClickedButton1()
{
CString strSelect ; // 设置一个字符串变量,用于准备获取ListBox中的选中项
INT nIndex = 0 ; // 用于指定被选中项索引号的INT变量
nIndex = lbox.GetCurSel(); // 获取ListBox中选中项的索引号
lbox.DeleteString(nIndex); // 删除选中项
}
Ok,我们就先写到这里吧,今天看了一下工具箱中的其他控件,我会抽时间,再近期写一些其它控件的使用的文章。感谢大家的关注~有不足之处,请尽情发表~嘿!
结尾:
在这一次的学习中,我们深入了解了ListBox的选中项操作,比如GetCurSel函数,用于获取当前选中项的索引;GetText(int index)函数,用于获取指定索引项的内容;DeleteString(int index)函数,用于删除指定索引项。当然了,还有很多很多方法,就有待大家挖掘了~~~~