文档库 最新最全的文档下载
当前位置:文档库 › VS2010和MFC编程入门之28(常用控件:列表视图控件List Control 上)

VS2010和MFC编程入门之28(常用控件:列表视图控件List Control 上)

VS2010和MFC编程入门之28(常用控件:列表视图控件List Control 上)
VS2010和MFC编程入门之28(常用控件:列表视图控件List Control 上)

VS2010MFC编程入门之二十八(常用控件:列表视图控件List

Control 上)

本节为大家详解列表视图控件List Control的使用。

列表视图控件简介

列表视图控件List Control同样比较常见,它能够把任何字符串内容以列表的方式显示出来,这种显示方式的特点是整洁、直观,在实际应用中能为用户带来方便。

列表视图控件是对前面讲到的列表框控件List Box的改进和延伸。列表视图控件的列表项一般有图标(Icon)和标签(Label)两部分。图标是对列表项的图形描述,标签是文字描述。当然列表项可以只包含图标也可以只包含标签。

列表视图控件有4种风格:Icon、Small Icon、List和Report。下面简单说下4种风格各自的特点:

Icon大图标风格:列表项的图标通常为32×32像素,在图标的下面显示标签。

Small Icon小图标风格:列表项的图标通常为16×16像素,在图标的右面显示标签。

List列表风格:与小图标风格类似,图标和文字的对齐方式不同。

Report报表风格:列表视图控件可以包含一个列表头来描述各列的含义。每行显示一个列表项,通常可以包含多个列表子项。最左边的列表子项的标签左边可以添加一个图标,而它右边的所有子项则只能显示文字。这种风格的列表视图控件很适合做各种报表。

列表视图控件的通知消息

鸡啄米在VS2010/MFC编程入门之五(MFC消息映射机制概述)中的“各种Windows 消息的消息处理函数”部分,就曾以列表视图控件为例简单讲了WM_NOTIFY通知消息及其消息映射入口和消息处理函数的形式。如果你忘记了可以回到第五节看一看,回忆一下。

鸡啄米这里给出下一节中将要演示的列表视图控件实例中,通知码为NM_CLICK的通知消息的消息映射入口:

ON_NOTIFY(NM_CLICK, IDC_PROGRAM_LANG_LIST,

&CExample29Dlg::OnNMClickProgramLangList)

还有消息处理函数自动生成时的形式:

C++代码

void CExample29Dlg::OnNMClickProgramLangList(NMHDR *pNMHDR, LRESULT

*pResult)

{

LPNMITEMACTIVATE pNMItemActivate =

reinterpret_cast(pNMHDR);

// TODO: Add your control notification handler code here

*pResult = 0;

}

我们看到,上面的代码中将NMHDR指针类型的pNMHDR强制转换为LPNMITEMACTIVATE类型的pNMItemActivate,那么我们就可以在函数中通过pNMHDR来访问NMHDR结构,也可以通过pNMItemActive指针变量来访问第一个元素为NMHDR结构体变量的扩充结构。

当然列表视图控件还有一些自己特有的通知消息,下面就介绍几个其中比较常用的。

LVN_ITEMCHANGING 和LVN_ITEMCHANGED:当列表视图的状态发生变化时,会发送这两个通知消息。例如,当用户选择了新的列表项时,程序就会收到这两个消息。

消息会附带一个指向NMLISTVIEW 结构的指针,消息处理函数可从该结构中获得状态信息。两个消息的不同之处在于,前者的消息处理函数如果返回TRUE,那么就阻

止选择的改变,如果返回FALSE,则允许改变。

LVN_KEYDOWN:该消息表明了一个键盘事件。消息会附带一个指向NMLVKEYDOWN结构的指针,通过该结构程序可以获得按键的信息。

LVN_BEGINLABELEDIT 和LVN_ENDLABELEDIT:分别在用户开始编辑和结束编辑标题时发送。消息会附带一个指向NMLVDISPINFO结构的指针。在前者的消息处理函数中,可以调用GetEditControl成员函数返回一个指向用于编辑标题的编辑框的指针,如果处理函数返回FALSE,则允许编辑,如果返回TRUE,则禁止编辑。在后者的消息处理函数中,NMLVDISPINFO结构中的item.pszText指向编辑后的新标题,如果pszText为NULL,那么说明用户放弃了编辑,否则,程序应负责更新表项的标题,这可以由SetItem或SetItemText函数来完成。

列表视图控件的相关结构体

下面我们来介绍一下与列表视图控件有关的一些结构体。

1. NMHDR结构体

C++代码

typedefstructtagNMHDR {

HWND hwndFrom; // 控件窗口的句柄

UINT_PTR idFrom; // 控件ID

UINT code; // 控件的通知消息码

} NMHDR;

此结构体在很多情况下都是其他扩充结构体的第一个元素,比如上面的NMITEMACTIVATE结构体:

C++代码

typedefstructtagNMITEMACTIVATE {

NMHDR hdr;

intiItem;

intiSubItem;

UINT uNewState;

UINT uOldState;

UINT uChanged;

POINT ptAction;

LPARAM lParam;

UINT uKeyFlags;

} NMITEMACTIVATE, *LPNMITEMACTIVATE;

2. LVITEM 结构体

该结构体包含了列表视图控件中列表项或列表子项的各种属性。

C++代码

typedefstruct _LVITEM {

UINT mask; // 掩码位的组合(下面有对应掩码的元素都已在括号中标出掩码),表明哪些元素是有效的

intiItem; // 列表项的索引

intiSubItem; // 列表子项的索引

UINT state; // 状态,下面会列出。(LVIF_STATE)

UINT stateMask; // 状态掩码,用来说明要获取或设置哪些状态。下面会列出

LPTSTR pszText; // 指向列表项或列表子项的标签字符串。(LVIF_TEXT)

intcchTextMax; // pszText指向缓冲区的字符的个数,包括字符串结束符。(LVIF_TEXT)

intiImage; // 图标的索引。(LVIF_IMAGE)

LPARAM lParam; // 32位的附加数据。(LVIF_PARAM)

#if (_WIN32_IE >= 0x0300)

intiIndent;

#endif

#if (_WIN32_WINNT >= 0x501)

intiGroupId;

UINT cColumns; // tile view columns

PUINT puColumns;

#endif

#if (_WIN32_WINNT >= 0x0600)

int* piColFmt;

intiGroup;

#endif

} LVITEM, *LPLVITEM;

下面是state和stateMask的取值及含义:

状态对应的状态掩码含义

LVIS_CUT 同左列表项或列表子项被选择用来进行剪切和粘贴操作 LVIS_DROPHILITED 同左列表项或列表子项成为拖动操作的目标

LVIS_FOCUSED 同左列表项或列表子项具有输入焦点

LVIS_SELECTED 同左列表项或列表子项被选中

3. LVCOLUMN结构体

该结构体仅适用于Report报表式列表视图控件。在向列表控件中插入一列时需要用到此结构体。它包含了列表控件某列的各种属性。

C++代码

typedefstruct _LVCOLUMN {

UINT mask; // 掩码位的组合(下面有对应掩码的元素都已在括号中标出掩码),表明哪些元素是有效的

intfmt; // 该列的表头和列表子项的标签正文显示格式,可以是LVCFMT_CENTER、LVCFMT_LEFT或LVCFMT_RIGHT。(LVCF_FMT)

int cx; // 以像素为单位的列的宽度。(LVCF_FMT)

LPTSTR pszText; // 指向列表头标题正文的字符串。(LVCF_TEXT)

intcchTextMax; // pszText指向缓冲区的字符的个数,包括字符串结束符。(LVCF_TEXT)

intiSubItem; // 该列的索引。(LVCF_SUBITEM)

#if (_WIN32_IE >= 0x0300)

intiImage;

intiOrder;

#endif

#if (_WIN32_WINNT >= 0x0600)

intcxMin;

intcxDefault;

intcxIdeal;

#endif

} LVCOLUMN, *LPLVCOLUMN;

4. NMLISTVIEW结构体

该结构体存放了列表视图控件通知消息的相关信息。列表视图控件的大部分通知消息都会附带指向该结构体的指针。

C++代码

typedefstructtagNMLISTVIEW {

NMHDR hdr; // 标准的NMHDR 结构

intiItem; // 列表项的索引

intiSubItem; // 列表子项的索引

UINT uNewState; // 列表项或列表子项的新状态

UINT uOldState; // 列表项或列表子项原来的状态

UINT uChanged; // 取值与LVITEM的mask成员相同,用来表明哪些状态发生了变化

POINT ptAction; // 事件发生时鼠标的客户区坐标

LPARAM lParam; //32位的附加数据

} NMLISTVIEW, *LPNMLISTVIEW;

有关列表视图控件的内容本节先讲这些,下节继续讲列表控件类CListCtrl的一些成员函数和应用实例

VFP中的列表框控件(listbox)

VFP中的列表框控件(listbox) 一.列表框(listbox):主要用于选择一组指定的数据,用户从列表中选取选项,然后执行所需的操作. 二.列表框常用属性:见下表 注1(rowsourcetype属性可指定的值): 0-无,运行时使用列表框的确良additem和addlistitem方法加入 1-值,将列表框的内容在设计时直接写在该属性中 2-表别名:由columncount确定表中选择的字段.当用户选择列表框时,记录指针将自动移到该记录上 3-sql语句:见sql部分,由执行的结果产生. 4-查询文件名:见查询部分,由查询结果产生 5-数组名 6-字段名表:可用表别名作为字段前缀.当用户选择列表项时,记录指针将自动移到该记录上7-文件名描述框架,可包含"*"和"?"来描述在列表框中显示的文件名 8-结构

9-弹出式菜单,提供向后兼容. 二.列表框常用的方法:见下表 三.列表框常用事件:列表框的常用事件为click(单击)事件和dbclick(双击)事件. 四.例:列表框练习 1.新建表单,添加一个文本框text1,三个命令按钮command1~command3,三个命令按钮的caption属性依次设为"加入","移出"和"全部移出",一个列表框list1.界面如图25 2.设置属性:将表单的caption属性设为"列表框练习",autocenter属性设为.T.;将列表框list1的moverbars属性设为.T.,multiselect属性设为.T. 3.编写代码: ●"加入"命令按钮command1的click事件: qm=thisform.text1.value IF !empty(qm) no=.t. FOR i=1 to thisform.list1.listcount IF thisform.list1.list(i)=qm &&如果文本框中输入的内容和列表框中已存在的内容相同,则不添加 no=.f. ENDIF NEXT i IF no thisform.list1.additem(qm) thisform.refresh

ListBox控件

ListBox控件 1.功能 ListBox控件显示较长的选项列表,用户可从中选择一项或多项。如果项总数超出可以显示的项数,则自动向ListBox控件添加滚动条。ListBox控件列表中的每个元素称为项。图1所示为ListBox控件。 图1 ListBox控件 2.属性 ListBox控件常用属性及说明如表1所示。 表1 ListBox控件常用属性及说明 下面对比较重要的属性进行详细介绍。 (1)Items属性。该属性用于查看列表框中的项。 语法: public ObjectCollection Items { get; } 属性值:ListBox.ObjectCollection表示ListBox中的项。 说明: ① 该属性使用户可以获取对当前存储在 ListBox 中的项列表的引用。通过此引用,可以在集合中添加项、移除项和获得项的计数。

② 可以使用DataSource属性来操控ListBox的项。如果使用DataSource属性向ListBox 添加项,则可以使用Items属性查看ListBox中的项,但不能使用 ListBox.ObjectCollection的方法向该列表添加项或从中移除项。 (2)SelectedItem属性。该属性表示当前选中的项。 语法: public Object SelectedItem { get; set; } 属性值:表示控件中当前选定内容的对象。 说明:对于标准 ListBox,可以使用此属性确定在ListBox中选定了哪个项。如果 ListBox 的SelectionMode属性设置为SelectionMode.MultiSimple或 SelectionMode.MultiExtended(它指示多重选择ListBox),并在该列表中选定了多个项,则此属性可返回任何选定的项。 示例 把左边的文本框中的内容移到右边的文本框中 本示例主要使用Items属性向ListBox1控件添加项,然后使用SelectedItem属性将ListBox1控件中的选中项添加到ListBox2控件中。示例运行结果如图2和图3所示。 图2 ListBox1中项移动前 图3 ListBox1中项移动后 程序主要代码如下: SqlConnection con = new SqlConnection("server=ZHY\\zhy;uid=sa;pwd=;database=student"); con.Open(); SqlCommand com = new SqlCommand("select * from student",con); SqlDataReader dr = com.ExecuteReader();

列表框

4.4 列表框

本节主要内容:1 、列表框的常用属性 2 、列表框的常用方法

(用于提供一些可供选择的列表项目,用户可从中选择一项或多项。) 在实际应用中,常常有这样的情况:列出若干个项,供用户从中任意选择,并对其作某种处理。如果项目较多,超过了列表框的长度,则系统自动在列表框边上加一个垂直滚动条,通过移动滚动条可以使列 表框中的内容作上下滚动,以使用户能够看到所需要的内容,列表框的图标为。 1 、列表框的常用属性(返回) 1 .List 属性 用于设置或返回控件的列表项的内容。既可在属性窗口中设置,也可在设计中设置。 该属性是一个字符串数组,每个数组元素都是列表框中的一个列表项。 List 数组的下标从 0 开始,即List ( 0 )保存表中的第一个数据项的内容, List ( 1 )保存第二个数据项的内容,依次类推, List ( ListCount-1 )保存表中的最后一个数据项的内容。 2 .ListCount 属性 表示列表框中有多少个列表项。 ListCount-1 代表列表框中最后一项的序号。该属性只能在程序中引用它。 3 .Text 属性 返回被选中列表项的文本内容,与 List(ListIndex) 相同。该属性是只读的,不能在属性窗口中设置,也不能在程序中设置,如果列表框中选择了多项,列表框的 Text 属性返回的是最后一次选中的文本内容。 4 .ListIndex 属性 使用 ListIndex 属性判断列表框中哪个项被选中,即设置或返回被选中的选项在 List 数组中的下标序号。① 如果用户没有从列表框中选择任何一项,则 ListIndex 为 -1 。② 在列表框 List1 中选中第3 项,即 List1.List 数组的第 3 项,则 ListIndex = 2 ( ListIndex 从 0 开始)。③ 与 List 配合使用,可获得当前被选中的列表项的内容。 List1.List ( List1. ListIndex )。④ 设置默认选项 List1. ListIndex=0 ,第 0 项为默认选项。 ListIndex 属性不能在设计时设置,只有程序运行时才起作用。 5 .Selected 属性 该属性是一个逻辑数组,表示相应的项在程序运行期间是否被选中。例如, List1.Selected ( 0 )的值为 True ,表示列表框控件中第一项被选中,如为 False ,表示未被选中。 6 .MultiSelect 属性 该属性值表明是否允许在列表框控件中选择多项,它必须在设计时设置,运行时只能读取该属性。

VC MFC列表框(CListBox)控件

列表框控件简单应用 重复性的过程我就不详细讲明了,只给出类里面函数的解释。 int CListBox::AddString( LPCTSTR lpszItem );//添加一个项,lpszItem是项文本内容 int CListBox::InsertString( int nIndex, LPCTSTR lpszItem );//同上,只不过这个可以指定项位置(索引),由参数nIndex指定 int CListBox::GetCurSel( ) const;//获取当前选中项的索引,函数返回索引值 int CListBox::GetText( int nIndex,CString &rString ) const;//根据索引获得项文本 int CListBox::GetCount( ) const;//获取项数量 void CListBox::ResetContent( );//删除列表框所有的项 int CListBox::DeleteString( UINT nIndex );//根据项索引从列表框删除一个项 int CListBox::SetItemHeight( int nIndex, UINT cyItemHeight );//设置一个项的高度,注意:列表框具有 //LBS_OWNERDRAWVARIABLE风格才可以单独设置一个项的高度,否则是所有项的高度 自绘列表框 这里自绘要达到的效果,就是简单模仿一下QQ界面里类似列表框控件的那种效果,先往对话框里添加列表框控件. 然后再改一下列表框的属性,所有者绘制项选择固定,有字符串前面打上勾. 接着准备两张位图,一张用于列表框的背景,一张用于项选中时的背景,ID号分别为:IDB_BK、IDB_SELECTED 如下两张位图:

MFC ListBox控件用法介绍

列表控件可以看作是功能增强的ListBox,它提供了四种风格,而且可以同时显示一列的多中属性值。MFC中使用CListCtrl类来封装列表控件的各种操作。通过调用?BOOLCreate(DWORDdwStyle,constRECT&rect,CWnd*pParentWnd,UINTnID);创建一个窗口,dwStyle中可以使用以下一些列表控件的专用风格: ?LVS_ICONLVS_SMALLICONLVS_LISTLVS_REPORT这四种风格决定控件的外观,同时只可以选择其中一种,分别对应:大图标显示,小图标显示,列表显示,详细报表显示 ?LVS_EDITLABELS结点的显示字符可以被编辑,对于报表风格来讲可编辑的只为第一列。 ?LVS_SHOWSELALWAYS在失去焦点时也显示当前选中的结点 ?LVS_SINGLESEL同时只能选中列表中一项 首先你需要设置列表控件所使用的ImageList,如果你使用大图标显示风格,你就需要以如下形式调用:? CImageList*SetImageList(CImageList*pImageList,LVSIL_NORMAL);? 如果使用其它三种风格显示而不想显示图标你可以不进行任何设置,否则需要以如下形式调用:? CImageList*SetImageList(CImageList*pImageList,LVSIL_SMALL); 通过调用intInsertItem(intnItem,LPCTSTRlpszItem);可以在列表控件中nItem指明位置插入一项,lpszItem为显示字符。除LVS_REPORT风格外其他三种风格都只需

VC++中 ListBox(列表框)的使用

VC++ ListBox(列表框)的使用 文档制作:@柳絮飘诗 ListBox的操作比较简单 1添加数据 声明控件变量的类别为Control,变量类型为CListBox,变量名为m_ListBox_Content. m_ListBox_Content.AddString(_T("123")); m_ListBox_Content.AddString(_T("汉字")); m_ListBox_Content.AddString(_T("English")); m_ListBox_Content.AddString(_T("!@#$%^&*()")); 2获取数据 CString s; m_ListBox_Content.GetText(1,s); MessageBox(s,_T("取得第2行数据"),MB_OK); s.ReleaseBuffer(); 将会得到"汉字"这个字符串,如果没有得到"汉字"这个字符串,是因为ListBox的Sort属性设为True了.设为False之后就按照你编写顺序写入(原来是这样 之前都没注意过) 3获取选择的数据 首先要将ListBox的Selection属性设置为Multiple; int nSel; nSel=m_ListBox_Content.GetCurSel(); CString s; m_ListBox_Content.GetText(nSel,s); MessageBox(s,_T("您选择的是"),MB_OK); s.ReleaseBuffer(); 4获取选择ListBox项的多个数据 首先要将ListBox的Selection的属性设置为Multiple int nSel = m_ListBox_Content.GetSelCount(); CArray< int,int& > arrayListSel; arrayListSel.SetSize(nSel); m_ListBox_Content.GetSelItems(nSel,arrayListSel.GetData()); CString s = _T(""); for( int i=0; i< nSel; i++ ) { m_ListBox_Content.GetText( arrayListSel[i], s); MessageBox(s,_T("您选择的是"),MB_OK); } 5双击删除所选项 添加一个ListBox的双击事件 m_ListBox_Content.DeleteString(m_ListBox_Content.GetCurSel()); //例子: CListBox *List; List=(CListBox*)GetDlgItem(IDC_LIST1); List -> AddString("AAA"); List -> SetCurSel(0);

https://www.wendangku.net/doc/0715869378.html,中 ListBox列表框控件的使用方法

ListBox 控件允许用户从预定义的列表中选择一个或多个项。它与DropDownList 控件的不同之处在于,它不但可以一次显示多个项,而且(可选)还允许用户选择多个项。 一、属性属性值作用SelectionModeSingle|Multiple列表选择模式:单选|多选SelectedFalse|true是否为选中状态 二、示例 ListBox.aspx 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ListBox.aspx.cs" Inherits="WebControls_ListBox" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.wendangku.net/doc/0715869378.html,/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="https://www.wendangku.net/doc/0715869378.html,/1999/xhtml"> <head runat="server">     <title></title>     <style type="text/css">         .style1         {             width: 293px;         }         .style2         {             width: 233px;         }     </style> </head> <body>     <form id="form1" runat="server">     <div>         <h5>1,单选列表框</h5>         省份:<asp:ListBox ID="lstProv"  runat="server">             <asp:ListItem>山东</asp:ListItem>             <asp:ListItem Selected="True">河北</asp:ListItem>             <asp:ListItem>内蒙</asp:ListItem>             <asp:ListItem>安徽</asp:ListItem>         </asp:ListBox>         <br />         <asp:Button ID="btnSubmit" runat="server" Text="提交"

VB列表框控件教案

VB控件—列表框 一教学目标: 知识目标: 1)掌握列表框控件的主要属性:list, MutiSelect,Listindex,Text的含义及用法2)学会运用列表框控件的主要方法:添加 additem,去除removeitem,清空clear 技能目标:通过完成项目,能利用新知识,编写简单程序,解决实际问题 情感目标: 1) 通过一个个步骤的实战演练,培养学生运用编程解决实际问题的能力,进一步激发 学生学习编程的爱好。 3)通过预防甲流的情境教学,提升学生对甲流的预防意识,并学习到更多预防甲流的知识。 二、教学重点:list,text属性,additem,removeitem,clear方法 三、教学难点:listindex,text的运用及区别 四、教学方法:项目教学法情境教学法 五、教学过程 大家好,听说我们学校刚评上国家级的职业学校,我这个县市级学校的老师今天能与我们同学一起学习交流感到非常荣兴,希望我所讲的能引起你们的共鸣,那老师也可以提升为国家级的级别了。 1.引入:(幻灯片1) 师:同学们都知道最近甲流疯狂爆发,人人自危,第二波甲流高潮也即将来临。预防甲流从我做起,我们平时不仅要勤洗手,常通风,多穿衣,养成良好的卫生习惯,更需结合饮食,防防患于未然,所以今天我们就来学习下利用VB控件里的列表框,做一个与甲流相关的项目。 2.新课: 师:先让老师展示下这个项目的成品(运行EXE可执行文件) (幻灯片2) 提问1:请同学们回答下左侧窗口中的哪些食品对预防甲流有益? 学生:回答 师:到低是否正确?答案让我们完成这个项目时再揭晓吧。 提问2:回到VB世界,同学们回答下这个界面包含哪些控件? 学生:标签,文本框,命令按钮…

ListBox控件的使用

CListBox是一种很常见的操作控件,用来从列表中选择相应的内容,这个控件以前没有用过,而且在一些书或教程上面讲解的很简单,无法从中看出如何来使用该控件,为了方便以后使用,这里先从MSDN上面的说明开始介绍起,把该控件的有关内容翻译一下,然后做一个程序来综合测试一下相关的功能 CListBox是从CWnd类继承下来的,对该类的总体介绍如下: 一、总体介绍: 一个列表框显示了一系列的项目,比如说文件名等,用户可以查看和选择操作。 在单选列表框中,用户只能选择一个项目,而对于多选列表框,一系列的项目都可以被选择,当用户选择项目后,该项目会被高亮显示,同时列表框将向其父窗口发送一个消息。 你可以用两种方法来创建一个列表框:从对话框个工具栏中拖动或者是直接用代码来创建。但用代码来直接创建时,先构造一个单选框的对象,然后调用Create方法创建一个列表框控件并将它和一个列表框对象关联起来。如果使用对话框工具来生成列表框,那么在对话框类中建立一个列表框的变量,然后使用DoDataExchange函数中的DDX_Control宏来连接该变量和控件(这一点在你用向导创建变量的时候会自动完成) 构造函数可以是一个一步过程,仅仅调用Create方法就可以了 如果你想处理列表框向其父窗口发送的消息(常常是CDialog类),那么你可以添加一个消息循环的入口和一个消息相应函数,格式如下: ON_Notification( id, memberFxn ) 这里id表示的是列表框子窗口的ID,而memberFxn则是父窗口中用来处理这个消息的消息响应函数,其原型如下: afx_msg void memberFxn( ); 下面的表格列举了有哪些消息能够发送给父窗口: 当你使用对话框工具箱来创建一个列表框时,列表框对象会在对话框关闭时自动销毁。 当你在一个窗口(WINDOW)中创建列表框时,你需要自行销毁其对象。如果你是在栈中创建列表框对象,那么它会自动销毁,而如果你在堆中创建列表框对象,比如采用new运算符,那么你必须调用delete方法来销毁该对象 如果你在列表框对象中申请了内存空间,你需要重载列表框的解构函数来释放内存 二、列表框的属性: 从上面的介绍中可以看到,列表框有不同的类型,这些都是通过设置属性来完成的,在VS2008上至少是这么来设置的,下面介绍一下几个关键的属性: 1)Selection属性:该属性用来指定列表框是否允许用户同时选择多个项,前面讲的多选列

VB列表框控件教案

VB控件—列表框 一教学目标: 知识目标: 1)掌握列表框控件的主要属性:list, MutiSelect,Listindex,Text的含义及用法2)学会运用列表框控件的主要方法:添加 additem,去除removeitem,清空clear 情感目标: 1) 通过一个个步骤的实战演练,培养学生运用编程解决实际问题的能力,进一步激发 学生学习编程的爱好。 3)通过预防甲流的情境教学,提升学生对甲流的预防意识,并学习到更多预防甲流的知识。 二、教学重点:list,text属性,additem,removeitem,clear方法 三、教学难点:listindex,text的运用及区别 四、教学方法:项目教学法情境教学法 五、教学过程 大家好,听说我们学校刚评上国家级的职业学校,我这个县市级学校的老师今天能与我们同学一起学习交流感到非常荣兴,希望我所讲的能引起您们的共鸣,那老师也可以提升为国家级的级别了。 1.引入:(幻灯片1) 师:同学们都知道最近甲流疯狂爆发,人人自危,第二波甲流高潮也即将来临。预防甲流从我做起,我们平时不仅要勤洗手,常通风,多穿衣,养成良好的卫生习惯,更需结合饮食,防防患于未然,所以今天我们就来学习下利用VB控件里的列表框,做一个与甲流相关的项目。2.新课: 师:先让老师展示下这个项目的成品(运行EXE可执行文件) (幻灯片2) 提问1:请同学们回答下左侧窗口中的哪些食品对预防甲流有益? 学生:回答 师:到低就是否正确?答案让我们完成这个项目时再揭晓吧。 提问2:回到VB世界,同学们回答下这个界面包含哪些控件? 学生:标签,文本框,命令按钮… 师:还有左右两测的框框,称为列表框 师:先请同学们打开自己D盘,一个“课堂项目”的文件夹,打开其工程文件,查瞧界面 提问3:这个界面与刚才老师展示的成品界面,有何区别? 学生:少两个列表框 师:所以根据程序设计步骤,我们接下来先设计未完成的界面,参考项目说明书:根据表格里的内容,在界面上补充两个列表控(Listbox),并修改其属性值 (幻灯片3,教师简单演示list属性文本的输入) 对象名称属性值

MFC ListBox控件用法介绍

MFC CListCtrl 使用介绍 列表控件可以看作是功能增强的ListBox,它提供了四种风格,而且可以同时显示一列的多中属性值。MFC中使用CListCtrl类来封装列表控件的各种操作。通过调用 BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );创建一个窗口,dwStyle中可以使用以下一些列表控件的专用风格: ?LVS_ICON LVS_SMALLICON LVS_LIST LVS_REPORT 这四种风格决定控件的外观,同时只可以选择其中一种,分别对应:大图标显示,小图标显示,列表显示,详细报表显示 ?LVS_EDITLABELS 结点的显示字符可以被编辑,对于报表风格来讲可编辑的只为第一列。 ?LVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点 ?LVS_SINGLESEL 同时只能选中列表中一项 首先你需要设置列表控件所使用的ImageList,如果你使用大图标显示风格,你就需要以如下形式调用: CImageList* SetImageList( CImageList* pImageList, LVSIL_NORMAL); 如果使用其它三种风格显示而不想显示图标你可以不进行任何设置,否则需要以如下形式调用: CImageList* SetImageList( CImageList* pImageList, LVSIL_SMALL); 通过调用int InsertItem( int nItem, LPCTSTR lpszItem );可以在列表控件中nItem指明位置插入一项,lpszItem为显示字符。除LVS_REPORT风格外其他三种风格都只需要直接调用InsertItem就可以了,但如果使用报表风格就必须先设置列表控件中的列信息。 通过调用int InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat , int nWidth, int nSubItem);可以插入列。iCol为列的位置,从零开始,lpszColumnHeading为显示的列名,nFormat为显示对齐方式,nWidth为显示宽度,nSubItem为分配给该列的列索引。 在有多列的列表控件中就需要为每一项指明其在每一列中的显示字符,通过调用 BOOL SetItemText( int nItem, int nSubItem, LPTSTR lpszText );可以设置每列的显示字符。nItem为设置的项的位置,nSubItem为列位置,lpszText为显示字符。下面的代码演示了如何设置多列并插入数据: m_list.SetImageList(&m_listSmall,LVSIL_SMALL);//设置ImageList m_list.InsertColumn(0,"Col 1",LVCFMT_LEFT,300,0);//设置列 m_list.InsertColumn(1,"Col 2",LVCFMT_LEFT,300,1); m_list.InsertColumn(2,"Col 3",LVCFMT_LEFT,300,2); m_list.InsertItem(0,"Item 1_1");//插入行 m_list.SetItemText(0,1,"Item 1_2");//设置该行的不同列的显示字符 m_list.SetItemText(0,2,"Item 1_3"); 此外CListCtrl还提供了一些函数用于得到/修改控件的状态。 COLORREF GetTextColor( )/BOOL SetTextColor( COLORREF cr );用于得到/设置显示的

ListBox控件使用示例

1.按图所示的界面和下表向窗体上添加控件并设置属性 2.代码如下 using System; using System.Collections.Generic; using https://www.wendangku.net/doc/0715869378.html,ponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace lianxiwinform { public partial class Form2 : Form { public Form2() { InitializeComponent(); listBox1.Items.AddRange(new object[] { "武汉", "北京", "广州", "上海", "天津", "重庆", "成都", "深圳" }); } private void button1_Click(object sender, EventArgs e) {

if (listBox1.SelectedIndex >= 0) { listBox2.Items.Add(listBox1.Text); listBox1.Items.RemoveAt(listBox1.SelectedIndex); } int l = listBox1.SelectedItems.Count; for (int i = 0; i < l; i++) { listBox2.Items.Add(listBox1.SelectedItems[0]); listBox1.Items.Remove(listBox1.SelectedItems[0]); } } private void button2_Click(object sender, EventArgs e) { int l = listBox1.Items.Count; for (int i = 0; i < l; i++) { listBox2.Items.Add(listBox1.Items[0]); listBox1.Items.Remove(listBox1.Items[0]); } } private void button3_Click(object sender, EventArgs e) { if (listBox2.SelectedIndex >= 0) { listBox1.Items.Add(listBox2.Text); listBox2.Items.RemoveAt(listBox2.SelectedIndex); } int r = listBox2.SelectedItems.Count; for (int i = 0; i < r; i++) { listBox1.Items.Add(listBox2.SelectedItems[0]); listBox2.Items.Remove(listBox2.SelectedItems[0]); } } private void button4_Click(object sender, EventArgs e) { int r = listBox2.Items.Count; for (int i = 0; i < r; i++) { listBox1.Items.Add(listBox2.Items[0]); listBox2.Items.Remove(listBox2.Items[0]); } }

listBox控件item属性

列表控件ListBox(lst) Item属性是一个集合,可以获取对当前存储在ListBox中的项列表的引用。通过这个引用,可以在集合中访问项,添加项,移除项和获得项的技术等等。 1 访问项 可以像访问数组元素一样访问Items集合中的项,例如: //将列表中的第二项显示在文本框中 textBox1.Text=listBox1. Items[1].ToString(); 2 添加项 有多种方法可以向集合中添加项。Add方法提供向集合中添加单个对象的能力。若要向集合中添加多个对象,可创建一个项的数组,并将其分配给AddRange方法。如果要在集合内的特定位置插入某个对象,可以使用Instert方法。例如: //在列表中体添加一个新项 listBox1. Items.Add(“清华大学”);

//将listBox1中的所有项添加到listBox2中 for(int i=0;i< listBox1. Items.Count;i++) { listBox2. Items.Add(listBox1. Items[i]); } //在列表中添加三个新项 listBox1. Items.AddRange(new object[]{“北京大学”,”复旦大学”,”南京大学”}); //在列表的第二个项之后插入一个新项 listBox1. Items.Insert(2,”武汉大学”); 3 移除项 如果要移除列表中的项,可以使用Remove方法,或者如果知道项在集合中的位置,也可以使用RemoveAt方法。Clear方法可以一次从集合中移除所有项,而不必使用Remove方法一次移除一个项。//移除列表中的第三个项 listBox1. Items. Remove(listBox1. Items[2]); //或者 listBox1. Items. RemoveAt(2); //移除列表中的所有项 listBox1. Items.Clear(); 4 获取选定项 通过SelectedIndex属性可以获得选定项的索引,如果没有选定任何

Excel VBA编程 组合框和列表框控件

Excel VBA编程组合框和列表框控件 在许多情况下,从列表中选择一个值,要比输入一个值更快、更容易。另外,选择列表中的选项,还可以帮助确保输入值的正确性。若需要通过较少空间显示较多数据信息,可以在表单中使用组合框或使用列表框。 1.组合框控件 组合框是一种下拉列表框,在窗体中使用得非常广泛,主要用来显示一些数据项,供用户进行选择。组合框与列表框不同,不会显示其列表项,只有在用户需要时才将其展开,另外,组合框中的列表项每次只能选中一个。 在工作表中添加组合框控件与添加按钮控件的方法相同。组合框控件没有显示文本,只有一个文本框与一个向下箭头图片的按钮组合在一起的控件。 在工作表中添加一个【组合框】控件,然后在工作表中选择一列,并在该列的单元格中连续输入要显示在组合框中的值。右击【组合框】控件,执行【设置控件格式】命令,打开【设置控件格式】对话框。如图11-12所示。 输入 右击 执行 输入 图11-12 【控制】选项卡 在【组合框】控件的【设置控件格式】对话框中,其【大小】、【保护】、【属性】和【Web】选项卡的作用与【按钮】控件中该对话框中相同选项卡的作用一样,在【控制】选项卡中,则用于设置【组合框】控件的显示设置。该对话框中的各项设置的功能如下: ●数据源区域 该文本框用于设置组合框的列表项,文本框中输入工作表内列的开始和结束,如$A1:$A10或A1:A10,表明组合框中的列表项的值为工作表中单元格A1到A10的值。 ●单元格链接 在该本文框中输入一个单元格的引用,如$B1或B1,当在组合框中选择了某个选项时,该单元格将显示所选选项在组合框中的位置,其值为数字。 ●下拉显示项数 该文本框用于设置组合框的列表中可以看到的选项的行数,当前列表项多于设置的下拉显示项数时,组合框的下拉列表框中多出一个垂直滚动条,用于滚动显示它其无法显示的项。 ●三维阴影启用【三维阴影】复选框,工作表中的组合框的外观将以“三维阴影”的样式显示。2.列表框控件 与组合框类似,列表框控件用于在多个项目中做出选择的操作。其不同之处在于,列表框在屏幕上将显示多个项目供选择,如项目太多,列表框将自动在右侧显示垂直滚动条。另外,列表框中的选项可以选中一顶或多项。 列表框控件的设置与组合框控件的设置也非常类似,都是在其【设置控件格式】对话框的【控

用VB做列表框的应用技巧

用VB做列表框的应用技巧 一、程序设计界面: 用VB做一个列表框向另外的列表框中添加选项并不是一件复杂的事情,在此向各位初学者(包括自己在内)介绍一下如何用列表框的属性和事件来实现这个功能。 新建一个标准EXE工程,在屏幕上会出现一个空白的窗体,向窗体上添加两个ListBox控件、二个Frame控件、四个CommandButton控件和二个OptionButton控件,添加控件后的窗体如图1所示。 图1 二、控件属性及设置列表: 图2

提示:MultiSelect设置为“2-Extended”,就可实现用Ctrl键和Shift键来选择列表中的内容。 三、程序的代码分别如下: 1.开始执行程序时,调用程序声明段中的代码: Dim flag(100) As Boolean, ff As Boolean Dim i, g As Integer 2.双击控件Command1,在代码窗口中的光标就会自动的跳转到控件Command1的Command1_Click()事件处,在该事件中添加下列代码:Private Sub Command1_Click() '添加…>> If ff = True Then For i = 0 To List1.ListCount - 1 If flag(i) = 0 And List1.Selected(i) Then '判断选项的选中状态 List2.AddItem List1.List(i) '向控件list2添加选项 flag(i) = 1 Call mun '调用统计列表个数 End If Next i End If If ff = False Then For i = List1.ListCount - 1 To 0 Step -1 If List1.Selected(i) Then '判断选项的选中状态 List2.AddItem List1.List(i) '向控件list2添加内容 List1.RemoveItem (i) Call mun '调用统计列表个数 End If Next i End If End Sub 3.双击Command2控件,并输入如下代码: Private Sub Command2_Click() '全部添加 If ff = True Then For i = 0 To List1.ListCount - 1 If flag(i) = 0 Then List2.AddItem List1.List(i) '将已选项追加到list2中 flag(i) = 1 Call mun End If Next i End If

选择类控件的使用(列表框、组合框)

课题:选择类控件的使用(列表框、组合框) 班级组别姓名教师评价: 编制人:李鹏飞审核人:杨宇虹【学习目标】 1、掌握列表框的使用及属性设置。 2、掌握组合框的使用及属性设置。 3、掌握组合框的分类 重点:列表框的使用、组合框的样式难点:列表框的使用 【预习案】 【使用说明与学法指导】 1.用20分钟左右的时间,阅读探究课本的内容,熟记基础知识。自主高效预习,提升自己的阅读理解能力. 2.完成教材助读设置的问题,然后结合课本的基础知识和例题,完成预习自测题. 3.将预习中不能解决的问题标出来,并写到后面“我的疑惑”处. 一、相关知识: 选择类控件常见的有单选钮、复选框、组合框、列表框、滚动条和框架。本次课主要学习列表框、组合框控件。 二、教材助读: 1、列表框、组合框控件的控件名。 2、列表框、组合框控件的常用属性名。 三、预习自测: (一)概念探究: 1、什么是列表框: 2、什么是组合框: (二)基础探究: 1、列表框的作用: 2、组合框的作用: 3、组合框的样式: 【探究案】 一、质疑探究

(一)基础知识探究 【问题探究】 2、组合框的常用属性 3、列表框和组合框的常用方法 四、当堂检测 1、列表框常用方法练习 (1)把文本框Text1中的文本添加到列表框List1中。 (2)把列表框List1中选中的项目删除。

(3)把列表框List1中选中的文本添加到列表框List2中。 (4)把X^2的值添加到列表框List1中。 (5)移除列表框List1中所有的列表项。 2、组合框常用方法练习 (1)把文本框Text1的文字字形设置为组合框中规定的字形。 (2)把文本框Text1的文字字号设置为组合框中规定的字号。 【训练案】 一、基础巩固题 1、在VB中,组合框是()和文本框的组合。 A.检查框 B. 单选按钮 C. 列表框 D.命令按钮 2、可通过()属性判断List列表框项目总数。 A. ListIndex B. ListText C. ListCount D. ListItem 3、执行List.Text=”30”的结果是() A. 指定List列表框的项目个数为30 B. List列表框最后一个项目数被改为”30” C. List列表框会增加一个”30”项目 D. 以上都错 4、设组合框C1中有三个项目,以下能删除最后一项的是() A.C1.RemoveItem B.C1.RemoveItem 2 C.C1.RemoveItem 3 D.C1.RemoveItem Combo1.ListCount 二、综合应用题 5、设有一个列表框L1共有10个项目和一个命令按钮C1。请在横线处填入适当的内容,将程序补充完整。(1)按下命令按钮时,将列表框第8项的内容显示在窗体上。 Private sub C1_Click() Print L1. End Sub (2)单击列表框某一项时将该项显示在窗体上。 Private sub L1_Click() Print L1. End Sub (3)按下命令按钮时删除列表框的第3项。 Private sub C1_Click() L1. End Sub (4)按下命令按钮时删除列表框中当前选中的列表项(设一定有项目选中) Private sub C1_Click() L1. End Sub (5)按下命令按钮时,在列表框中第4项后插入一个项目“1” Private sub C1_Click() L1.

列表框控件

列表框控件(listbox) [下载例程] 列表框主要用于输入,它允许用户从所列出的表项中进行单项或多项选择,被选择的项呈高亮度显示.列表框具有边框,并且一般带有一个垂直滚动条.列表框分单选列表框和多重选择列表框两种.单选列表框一次只能选择一个列表项,而多重选择列表框可以进行多重选择.对于列表项的选择, 应用程序用CreateWindowEx创建列表框控件时,可根据控件的用途在下表中选择部份常数来设定其风格属性(style)。 常数说明 LBS_DISABLENOSCROLL 固定显示垂直滚动条。未指定本项时,当列表未超出窗口,垂直滚动条自动隐藏。 LBS_EXTENDEDSEL 使用键盘“SHIFT”键或另指定键加鼠标进行多选。 LBS_HASSTRINGS 含有字符串的自绘式列表框.应用程序在自绘式列表框进行自绘时可以用LB_GETTEXT消息来取得列表项的文本。 LBS_MULTICOLUMN 多列列表框,带有水平滚动条。应用程序可以用LB_SETCOLUMNWIDTH 消息来为列表框指定列数。 LBS_MULTIPLESEL 支持多重选择。列表项的选择状态随着用户对该项单击或双击鼠标而翻转。 LBS_NODA TA本项已不被支持。 LBS_NOINTEGRALHEIGHT 列表框的尺寸由应用程序而不是Windows指定.通常,Windows指定尺寸会使列表项的某些部分隐藏起来。 LBS_NOREDRA W 禁止刷新。当选择发生变化时防止列表框被更新,可发送WM_SETREDRA W来改变该风格。 LBS_NOSEL 禁止选择,列表项只能看,不能被选择。 LBS_NOTIFY当用户单击或双击鼠标时通知父窗口。 LBS_OWNERDRAWFIXED 指定自绘式列表框,即由父窗口负责绘制列表框的内容,并且列表项有相同的高度。在控件被创建时父窗口将收到WM_MEASUREITEM 消息,当需要重绘时父窗口将收到WM_DRA WITEM 消息。 LBS_OWNERDRAWV ARIABLE 指定自绘式列表框,并且列表项有不同的高度.在控件被创建时父窗口将收到WM_MEASUREITEM消息,当需要重绘时父窗口将收到WM_DRA WITEM 消息。 LBS_SORT 使插入列表框中的项按字母升序排列. LBS_STANDARD 使用默认风格,相当于指定了边框,垂直滚动条,字母升序排列和鼠标单双击通知消息这几项风格 LBS_USETABSTOPS 使列表框在显示列表项时识别并扩展制表符(08h),缺省的制表宽度是32个对话框单位。 LBS_WANTKEYBOARDINPUT 响应键盘输入。当控件拥有键盘输入焦点时,允许接收父窗口接收WM_VKEYTOITEM和WM_CHARTOITEM消息,输入字符。 应用程序可以通过调用SendMessage向控件发送如下消息来设定和查询控件各种参数。uMsg wParam lParam 说明 LB_ADDFILE 0 文件名地址增加文件名。 LB_ADDSTRING 0 字符串地址追加一个列表项。如果指定了LBS_SORT风格,表项将被

相关文档