C#利用反射,遍历获得一个类的所有属性名

C#利用反射,遍历获得一个类的所有属性名

命名空间:System.Reflection

程序集:mscorlib(在mscorlib.dll 中)

C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值

总结:

对应某个类的实例化的对象tc, 遍历获取所有属性(子成员)的方法(采用反射):

Type t = tc.GetType();//获得该类的Type

//再用Type.GetProperties获得PropertyInfo[],然后就可以用foreach 遍历了

foreach (PropertyInfo pi in t.GetProperties())

{

object value1 = pi.GetValue(tc, null));//用pi.GetValue获得值

string name = https://www.360docs.net/doc/4917359586.html,;//获得属性的名字,后面就可以根据名字判断来进行些自己想要的操作

//获得属性的类型,进行判断然后进行以后的操作,例如判断获得的属性是整数

if(value1.GetType() == typeof(int))

{

//进行你想要的操作

}

}

注意:

必须要设置了get 和set方法的属性,反射才能获得该属性

public int Pid

{

get { return pid; }

set { pid = value; }

}

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

图像列表控件(ImageList)的常用属性

2.11、图像列表控件(ImageList)的常用属性 属性说明(Name)图像列表控件的名称 (自定义)打开属性页 BackColor背景颜色。可从弹出的调色板选择。ImageHeight图像列表控件控件的高度 ImageWidth图像列表控件控件的宽度 Index在对象数组中的编号 Left距离容器左边框的距离 MaskColor 获得或设置一个值,决定在图像列表的图形操作中透明的颜色。可从弹出的调色板选择。 Tag存储程序所需的附加数据Top距容器顶部边界的距离 UseMaskColor 获得或设置一个值,决定图像列表控件是否使用MaskColor属性。取值为:True False 2.12、Inet控件的常用属性 属性说明(Name)Inet控件的名称 (自定义)打开属性页 AccessType 获得或设置该控件连接的代理行为。取值为: 0 icUseDefault 1 icDirect 2 icNamedProxy Document获得或设置要在服务器上检索的文档。Index在对象数组中的编号 Left距离容器左边框的距离 Password授权时使用的密码。 Protocol 该URL使用的协议。取值为: 0 icUnknown 1 icDefault 2 icFTP

4 icHTTP 5 icHTTPS Proxy当访问网时要使用的代理服务器。 RemoteHost获得或设置远程计算机。 RemotePort获得或设置远程计算机上要使用internet的端口。RequestTimeout获得或设置等待请求完成的秒数。 Tag存储程序所需的附加数据 Top距容器顶部边界的距离 URL获得或设置该控件使用的URL。 UserName授权时使用的用户名 2.13、列表视图控件(ListView)的常用属性 属性说明(Name)列表视图控件的名称 (自定义)打开属性页 AllowColumnReorder 获得或设置用户是否可以对报表显示的列重排序。取值为:True False Appearance 获得或设置是否用立体效果绘制。取值为: 0 ccFlat(平面) 1 cc3D(立体) Arrange 获得或设置排列列表视图控件中的图标或小图标视图。取值为: 0 lvwNone 1 lvwAutoLeft 2 lvwAutoTop BackColor背景颜色。可从弹出的调色板选择。 BorderStyle 获得或设置边界样式。取值为:0 ccNone(无边界线) 1 ccFixedSingle(固定单线框) CauseValidation 该控件获得焦点时,失去焦点的控件的Validate事件是否发生。取值为:True 发生 False 不发生 Checkboxes 获得或设置一个值,决定在列表的每一项的旁边,是否显示一个复选框。取值为: True 显示

MFC列表控件

列表控件(CListCtrl)和列表框控件(CListBox)有一定的区别,大家不要混淆。列表控件(List Control)用来成列地显示数据,其表项通常包括图标(Icon)和标签(Lable)两部分,它们分别提供了对数据的形象和抽象描述。 图像列表控件(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,(可以把这些图标看成是以数组方式存储的),图像列表通常由大图标或位图构成,其中包含透明位图模式(实际上,所有的再一个图像列表中的图标都被存储在一个屏幕设备的位图中)。可以利用windows API来绘制、建立和删除图像,并能实现增加、删除、替换和拖动图像邓操作。图像列表控件提供了控制图像列表额基本方法,这些方法在Windows 95及以后版本才能实现。该控件是不可见的,通常与其他如CListBox、CComboBox、CComboBoxEx 以及CTabCtrl一起使用,为他们提供图标资源。 CImageList& ImageList建立图像控件对象结构,Create初始化图像列表并绑定对象,图像控件的建立方法如下BOOL Create(int cx,int cy,UINT nFlags,int nInitial,int nGrow); BOOL Create(UINT nBitmapID,int cx,int nGrow,COLORREF crMask); BOOL Create(LPCTSTR lpszBitmapID,int cx,int nGrow,COLORREF crMask); BOOL Create(CImageList& imageList1,int nImage1,CImageList& imagelist2,int nImage2,int dx,int dy); 其中各项参数的含义为:cx定义图像的宽度,单位为像素;cy定义图像的高度,单位为像素;nFlags确定建立图像列表的类型,可以是以下值的组合:ILC_COLOR、ILC_COLOR4、ILC_COLOR8、ILC_COLOR16、ILC_COLOR24、ILC_COLOR32、ILC_COLORDDB和ILS_MASK;nInitial用来确定图像列表包含的图像;nGrow 用来确定图像列表可控制的图像数量。 nBitmapID用来确定图像列表联系的位图标志值;crMask表示颜色屏蔽位;lpszBitmapID用来确定包含位图资源额标识串;imagellist1指向图像列表控件对象的一个指针;nImage1图像列表1中包含的图像数量;imagelist2指向图像列表控件对象的一个指针。 对于图像控件,同样不能单独使用,必须与列表控件、树控件和标签控件相互结合使用,下面分别介绍其具体应用技巧。 图像控件在列表控件中的应用技巧

控件的分类

控件的分类;标准控件(工具箱自带的控件,不可删)、active控件、可插入对象(可添加到工具箱再使用,可删) 1、active控件:Animation控件和SSTab控件的应用 添加方法;a、工程------部件----(找到其文件名)b、单击右键------部件-----(找到其文件名) Active控件; 1、animation控件;Microsoft Windows Common Control-26.0文件名;MSCOMCT2.OCX 2、SSTab控件;Microsoft Tabbed Dialog Control 6.0文件名;TABCTL32.OCX 二、单选按钮(optionbutton)实现多选一 具有排他性;当其中一个被选中时其他的自行关闭, 例;钮分别有两个按为男和女,当选男时就不能同时选女 相应的属性设置; Coption显示按钮名称 Value;false(单选按钮未被选中状态),ture(单选按钮被选中状态) Enable;false(不可用,呈灰色),ture(单选按钮可用) Style(显示按钮风格,用于其外观的设置);0,为标准形式(即原始形态),1,为图形方式(单选按钮被选中状态图片装载在downpicture,单选按钮未被选中状态图片装载在picture,控件不可用装载在disablepicture) If Index = 0 Then Text1.FontName = "黑体" ElseIf Index = 1 Then Text1.FontName = "楷体" ElseIf Index = 2 Then Text1.FontName = "隶书" ElseIf Index = 3 Then Text1.FontName = "宋体" 总结;fontname=,fontsize= 其他的都加“” If Check1(0).Value = 1 Then对象 Text1.Font = ture ElseIfCheck1(1).Value = 1 Then Text1.FontItalic = ture ElseIfCheck1(2).Value = 1 Then Text1.FontBold = True ElseIfCheck1(3).Value = 1 Then Text1.FontUnderline = ture End If 常用方法:setfocus,move 例;option2.setfocus Command.move width/2,height/6,left/6,top/7

U8开发之单据列表控件

U8单据列表控件 摘要 单据列表控件是供业务单据展示列表数据以及编辑处理的,并且集成了部分单据列表公共按钮、快捷过滤、翻页功能。同时也支持直接通过单据列表编辑录入数据。 概念说明 公共按钮是指单据列表固有的一些操作,如:查询、条件格式设置、布局等等;快捷过滤是一种更加直接快速的常用查询项目过滤,主要区别在于可以直接在列表主界面录入常用过滤项目内容进行查询;翻页功能集成则是指列表控件自带了翻页处理,业务模块使用时可以不用专门处理翻页的逻辑。 目标 本文主要介绍单据列表控件的业务应用及相关注意事项,方便各类U8产品开发人员更好的使用高效开发产品。 文档内容 一、列表控件(V11.0)增加的特性: 1.集成【快捷过滤】功能;类似原来各列表界面里toolbar 上的查询\刷新\[滤设]功能。 查询按钮下拉查询方案:默认操作兼容原有功能。

查询支持方案和快捷条件详细设置: 【快捷过滤】相关的业务组代码调整:调整过滤对象的查询方法(UFGeneralFilter.FilterSrv.OpenFilter)调用,修改为调用过滤对象初始化方法

(UFGeneralFilter.FilterSrv. InitBaseVarValue),参数传递与过滤对象查询原来的方法(UFGeneralFilter.FilterSrv.OpenFilter)兼容。然后调用新单据列表控件的快捷过滤初始化方法(VouchList.InitFlt),把初始化好的过滤对象传入(如果没有过滤对象,也可以直接传入过滤对象ID或过滤对象名称+子系统号)。代码修改前后对比示例如下(灰色字体部分是已经被注释的修改前的代码,下同): …(引用的是服务协议列表代码修改模型) Set m_opub = CreateObject("UFGeneralFilter.FilterSrv") ' bSuccess = m_opub.OpenFilter(g_Login, "6729D410-233A-4674-A48A-2C34C17B82F6", "", "", ErrInfo) 'lliang_2011-11-22_[单据列表]:快捷过滤 bSuccess = m_opub.InitBaseVarValue(g_Login, "6729D410-233A-4674-A48A-2C34C17B82F6", "", "", ErrInfo) … Call VouchList.InitFlt (g_Login, m_opub, "", "", "", "", Err) 参数1:Login对象 参数2:过滤对象 参数3:条件的Key 参数4:过滤的名称 参数5:子产品号 参数6:返回的错误信息 返回值:如果返回为False表明出现失败 说明:你可以用参数2,忽略参数3、4、5或用参数3而忽略参数2和4、5或用参数4、5而忽略2和3. 注意事项:调用此初始化方法的时机要求在Form_Load事件里,目前大部分产品的过滤对象调用(m_opub.OpenFilter)都是在相应的类模块或其他非窗体模块处理,所以需要各模块根据实际情况把过滤对象变量有效传递到窗体然后在Form_Load事件里调用。推荐的方法是事前在窗体模块声明全局变量,然后在调用过滤对象的地方把已经初始化好的过滤对象暂时赋值给窗体的全局变量,最后在Form_Unload事件里即时的释放该全局变量。

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世界,同学们回答下这个界面包含哪些控件? 学生:标签,文本框,命令按钮…

可编辑的列表控件 (VS2010 修改版)

在界面上成组地显示含有多个数据项的数据集,是列表控件的主要用途。如下图所示,Windows资源管理器中文件列表的显示就是列表控件的一个典型应用。 从数据显示的角度看,列表控件的功能已经比较强大了(支持大图标、小图标、列表、详细资料等多种显示方式;支持排序、查找、定位、增删等)。但美中不足的是,它不支持数据项的编辑功能。在很多的实际应用中,需要在显示数据的同时,允许用户―就地‖对某些数据项进行修改。例如,在Windows资源管理器中,我们可以在浏览文件夹的同时修改其中任何一个文件的名字。这主要得益于Windows资源管理器中所使用的列表控件支持字段编辑功能。否则,简单的文件名修改也会变成一件很麻烦的事情。 因此,标准的列表控件只适合用于数据集的显示,而具有数据编辑功能的列表控件却可以在更广的范围里得到应用。本文重点介绍其实现过程。 1.基本原理 在列表控件上实现可编辑功能的原理非常简单,借助一个编辑框控件即可达到目的。具体步骤如下:①从 CListCtrl派生一个子类,并拦截某个意味着进入编辑状态的消息,获取需要编辑的数据项的相关信息。所拦截的消息通常选择鼠标消息(例如双击),这样更容易确定数据项在列表控件中的位置(行号、列号)及其所占的区域。②将一个编辑框控件移动到待编辑数据项所在的区域上,装入待编辑的数据并显示出来,供用户进行修改。③编辑结束后将修改后的数据返回给列表控件,让其在对应的子项上显示新的数据。 2.实现过程 1)在VC 6.0中,新建一个基于对话框的项目,名称:Exam02。 2)编辑对话框资源,删除IDOK 按钮和静态标签;保留IDCANCEL按钮,将其标题改为―退出‖;添加一个列表控件,将其显

列表控件(排序)

本讲主要介绍组合框(Combo Box)控件和列表框(List Box)控件的的使 用方法。 一.创建一个基于对话框的应用程序模板 1.选择应用程序类型: 选择“File\New”菜单→在弹出的“New”对话框的选择“Projects” 选项卡→应用程序类型选择“MFC AppWizard(exe)”→“Project name”编辑框中输入“ListBox”→“Location”编辑框中输入适当的路径→单击“OK” 2.选择项目类型 在“MFC AppWizar – Step 1”对话框中“Dialog based”单选钮→ 单击“Finish”按钮。 二.修改对话框模板 把主对话框模板修改成如下图所示: 图6-1 1.增加“编号”、“姓名”、“出生年月”、“性别”、“职称”和“职工情况列表” 等六个静态文本 2.在“编号”右侧增加一个下沉风格的静态文本,资源符号为:IDC_NUMBER 在“Styles”选项卡的“Center-vertically”复选钮:选中 3.在“姓名”和“出生年月”右侧,增加二个编辑框,资源符号分别为: IDC_NAME, IDC_BIRTHDAY 4.在“性别”和“职称”右侧,增加二个组合框,资源符号分别命名为:

IDC_SEX 在Combo Box Properties对话框的styles选项卡的 type下拉列表框中选择Drop List 注: Drop List选项不允许组合框编辑输入 IDC_TITLE 在Combo Box Properties对话框的styles选项卡的 type下拉列表框中选择Drop List 注: Dropdown选项允许组合框编辑输入 5.增加“添加”、“删除当前选定行”和“在选定行前插入”三个按钮,ID值命名为: IDC_ADD, IDC_DELETE, IDC_INSERT 6.在“职工情况列表”的下方,增加一个列表控件”List Control”:在”List Control Properties”对话框中如下设置: A.在General选项卡的ID组合框中输入: IDC_LIST B.在Styles选项卡中选择: “View:”下拉列表框: Report “Align:”下拉列表框: Top “Sort:”下拉列表框: Ascending “Single selection”复选框:选中 三.为控件连接变量 为各控件连接的变量名及其值类型和变量类型如下(连接方法前已述): 控件ID 变量名变量类别变量类型 IDC_NUMBER m_nNumber value CString IDC_NAME m_sName value CString IDC_BIRTHDAY m_sBirthday value CString IDC_SEX m_nSex valve int m_cSex Control CComboBox IDC_TITLE m_sTitle value CString m_cTitle Control CComboBox IDC_LIST m_cList Control CListBox 注:IDC_TITLE组合框控件上各连连接了两个变量,它们值类型分别为value 和Control,连接方法是对同一个控件ID,两次使用“Add Variables…” 即可。 四.组合框控件的初始化 1.在CListBoxDlg类中添加二个成员变量: 变量类型变量名作用域 CString strTitle public CString m_sSex public 2.在CListBoxDlg类的构造函数中对变量strTitle初始化: strTitle="助教/讲师/副教授/教授/"; 3.在CListBoxDlg类中添加一个函数:

第5讲列表控件

第五讲列表控件 本讲主要介绍组合框(Combo Box)控件和列表框(List Box)控件的的使 用方法。 一.创建一个基于对话框的应用程序模板 1.选择应用程序类型: 选择“File\New”菜单→在弹出的“New”对话框的选择“Projects” 选项卡→应用程序类型选择“MFC AppWizard(exe)”→“Project name”编辑框中输入“ListBox”→“Location”编辑框中输入适当的路径→单击“OK” 2.选择项目类型 在“MFC AppWizar – Step 1”对话框中“Dialog based”单选钮→ 单击“Finish”按钮。 二.修改对话框模板 把主对话框模板修改成如下图所示: 图6-1 1.增加“编号”、“姓名”、“出生年月”、“性别”、“职称”和“职工情况列表” 等六个静态文本 2.在“编号”右侧增加一个下沉风格的静态文本,资源符号为:IDC_NUMBER 在“Styles”选项卡的“Center-vertically”复选钮:选中 3.在“姓名”和“出生年月”右侧,增加二个编辑框,资源符号分别为: IDC_NAME, IDC_BIRTHDAY 4.在“性别”和“职称”右侧,增加二个组合框,资源符号分别命名为:

IDC_SEX 在Combo Box Properties对话框的styles选项卡的 type下拉列表框中选择Drop List 注: Drop List选项不允许组合框编辑输入 IDC_TITLE 在Combo Box Properties对话框的styles选项卡的 type下拉列表框中选择Drop List 注: Dropdown选项允许组合框编辑输入 5.增加“添加”、“删除当前选定行”和“在选定行前插入”三个按钮,ID值命名为: IDC_ADD, IDC_DELETE, IDC_INSERT 6.在“职工情况列表”的下方,增加一个列表控件”List Control”:在”List Control Properties”对话框中如下设置: A.在General选项卡的ID组合框中输入: IDC_LIST B.在Styles选项卡中选择: “View:”下拉列表框: Report “Align:”下拉列表框: Top “Sort:”下拉列表框: Ascending “Single selection”复选框:选中 三.为控件连接变量 为各控件连接的变量名及其值类型和变量类型如下(连接方法前已述): 控件ID 变量名变量类别变量类型 IDC_NUMBER m_nNumber value CString IDC_NAME m_sName value CString IDC_BIRTHDAY m_sBirthday value CString IDC_SEX m_nSex valve int m_cSex Control CComboBox IDC_TITLE m_sTitle value CString m_cTitle Control CComboBox IDC_LIST m_cList Control CListBox 注:IDC_TITLE组合框控件上各连连接了两个变量,它们值类型分别为value 和Control,连接方法是对同一个控件ID,两次使用“Add Variables…” 即可。 四.组合框控件的初始化 1.在CListBoxDlg类中添加二个成员变量: 变量类型变量名作用域 CString strTitle public CString m_sSex public 2.在CListBoxDlg类的构造函数中对变量strTitle初始化: strTitle="助教/讲师/副教授/教授/"; 3.在CListBoxDlg类中添加一个函数:

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

课题:选择类控件的使用(列表框、组合框) 班级组别姓名教师评价: 编制人:李鹏飞审核人:杨宇虹【学习目标】 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.

VC++ 列表控件的使用方法

列表控件可以看作是功能增强的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 同时只能选中列表中一项 方法/步骤 1. 1 为了演示,我新建一个工程 打开,文件,新建

2. 2 选择MFC APP,工程名字任选,但是必须是英文,文件位置自选 3. 3 点下一步,选择基于对话框的模式,直接点完成

4. 4 点击列表控件,然后在对话框里画一下范围,即可画出列表控件 5.右键点列表控件,点属性

6.在常规里,修改一下控件ID,可以自己命名 7.在样式标签里选择报告模式,其他默认 8.按ctrl+w 键,呼出类向导,选择CTestDlg,这是建工程时候的名字,自己 命名的,未必和我一样,选择Member Variable标签

9.点一下IDC_LIST_INFO,也是自己命名的,可能和我的不一样,点击Add Variable 10.自己起个名字,m_XXX,如图 点击OK 11.点击Message Map 选项卡,首先选择cTestDlg ,图1 在Message 列表里选择INITDIALOG

列表框控件

列表框控件(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风格,表项将被

虚拟列表控件(CListCtrl)

虚拟列表控件(CListCtrl) 2009年05月05日星期二16:00 一、什么是虚拟列表控件虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件。。 二、为什么使用虚拟列表控件 我们知道,通常使用列表控件CListCtrl,需要调用InsertItem把要显示的数据插入列表中,之后我们就不必关心数据在哪里了,这是因为控件自己开辟了内存空间来保存这些数据。现在假设我们要显示一个数据库,里面的信息量很大,有几十万条记录。通常有两种方法解决这个问题:1是仅仅在ListCtrl中插入少量的数据,比如100个,然后通过[上一页][下一页]两个按钮进行控制,某一时刻显示的只是从xxx到xxx+100之间的记录。2是把所有数据全部插入到ListCtrl中,然后让用户通过滚动来查看数据。无疑,很多用户喜欢采用第二种方式,特别是对于已经排序的数据,用户只需用键盘输入某行的开头字符,就可以快速定位到某一行。但是,如果这样做,InsertItem插入数据的过程将是很漫长的,而且用户会看到ListCtrl刷新速度也很慢,而且所有数据都位于内存中消耗了大量的内存,当数据多达上万以后几乎是不能忍受的。 为此,mfc特别提供了虚拟列表的支持。一个虚拟列表看起来和普通的ListCtrl一样,但是不用通过InsertI tem来插入数据,它仅仅知道自己应该显示多少数据。但是它如何知道要显示什么数据呢?秘密就在于当列表控件需要显示某个数据的时候,它向父窗口要。假设这个列表控件包含100个元素,第10到20个元素(行)是可见的。当列表控件重画的时候,它首先请求父窗口给它第10个元素的数据,父窗口收到请求以后,把数据信息填充到列表提供的一个结构中,列表就可以用来显示了,显示第10个数据后,列表会继续请求下一个数据。 在虚拟的样式下,ListCtrl可以支持多达DWORD个数据项。(缺省的listctrl控件最多支持int个数据项)。但是,虚拟列表的最大优点不在于此,而是它仅仅需要在内存中保持极少量的数据,从而加快了显示的速度。所以,在使用列表控件显示一个很大的数据库的情况下,采用虚拟列表最好不过了。 不仅CListCtrl提供虚拟列表的功能,MFC的CListView类也有同样的功能。 三、虚拟列表控件的消息 虚拟列表总共发送三个消息给父窗口:当它需要数据的时候,它发送LVN_GETDISPINFO消息。这是最重要的消息。当用户试图查找某个元素的时候,它发送LVN_ODFINDITEM消息;还有一个消息是LVN_O DCACHEHINT,用来缓冲数据,基本上很少用到这个消息。 虚拟列表控件使用起来非常简单。它总共只有三个相关的消息,如果你直接使用CListCtrl,应该在对话框中响应这三个消息。如果你使用CListCtrl派生类,可以在派生类中响应这三个消息的反射消息。这三个消息分别是: (1)LVN_GETDISPINFO 控件请求某个数据 (2)LVN_ODFINDITEM 查找某个数据 (3)LVN_ODCACHEHINT 缓冲某一部分数据 我们必须响应的消息是(1),多数情况下要响应(2),极少数的情况下需要响应(3)

文件树控件和视图列表控件组合使用

功能:文件树控件(Tree Control)和列表视图控件(List Control)组合使用显示一个节点文件夹中的指定文件 实现: 1.创建文件树控件和列表视图控件在窗口中,定义相应的控件变量; 2.定义CImageList m_ImageList;变量,用于在list控件中设置图标,定义如下 m_ImageList.Create(32,32,ILC_COLOR32,10,30); m_list.SetImageList(&m_ImageList,LVSIL_NORMAL); 3.在窗口类中定义GetFullPath函数来获取文件树中某个节点的文件全路径: CString CTreeViewDlg::GetFullPath(HTREEITEM hCurrent){ CString strTemp; CString strReturn = ""; while(hCurrent != m_hRoot){ strTemp = m_tree.GetItemText(hCurrent); if (strTemp != _T("计算机")){ if (strTemp.Right(1) != _T("\\")) strTemp += _T("\\"); strReturn = strTemp + strReturn;} hCurrent = m_tree.GetParentItem(hCurrent);} return strReturn;} 4.在tree控件中响应TVN_SELCHANGED消息,在其消息响应函数中编写程序: m_LvmPicture.DeleteAllItems(); //消除视图列表控件中原有的项 TVITEM item = pNMTreeView->itemNew; //如果是root节点则返回 if(item.hItem == m_FTRoot)return; //在其余子节点中查找 CString str = GetFullPath(item.hItem); if(str.Right(1) != "\\") str += "\\"; str += "*.*"; CFileFind file; BOOL bContinue = file.FindFile(str); while(bContinue) { bContinue = file.FindNextFile(); if(!file.IsDirectory() && !file.IsDots()) { SHFILEINFO info; CString temp = str; int index = temp.Find("*.*"); temp.Delete(index,3); SHGetFileInfo(temp + file.GetFileName(),0,&info,sizeof(&info),SHGFI_DISPLAYNAME | SHGFI_ICON); int i = m_ImageList.Add(info.hIcon); m_LvmPicture.InsertItem(i,info.szDisplayName,i); }} 如果使用的是MFCSHELLTREE控件,获取路径使用GetItemPath函数。

列表框控件(CListBox)和列表控件

VC++MFC编程技术--第五章列表框控件(CListBox)和列表控件(CListCt... 列表框主要用于输入,它允许用户从所列出的表项中进行单项或多项选择,被选择的项呈高亮度显示.列表框具有边框,并且一般带有一个垂直滚动条.列表框分单选列表框和多重选择列表框两种.单选列表框一次只能选择一个列表项,而多重选择列表框可以进行多重选择. 5.1 MFC的CListBox类 MFC的CListBox类封装了列表框.CListBox类的Create成员函数负责列表框的创建,该函数的声明是 BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); 参数dwStyle指定了列表框控件的风格,如表6.10所示,dwStyle可以是这些风格的组合.rect说明了控件的位置和尺寸.pParentWnd指向父窗口,该参数不能为NULL。nID则说明了控件的ID。如果创建成功,该函数返回TRUE,否则返回FALSE. 5.2 CListBox类的成员函数 CListBox类的成员函数有数十个之多.需要说明的是,可以用索引来指定列表项,索引是从零开始的. CListBox成员函数提供了下列函数用于插入和删除列表项 int AddString( LPCTSTR lpszItem ); 该函数用来往列表框中加入字符串,其中参数lpszItem指定了要添加的字符串.函数的返回值是加入的字符串在列表框中的位置,如果发生错误,会返回LB_ERR或LB_ERRSPACE(内存不够).如果列表框未设置LBS_SORT风格,那么字符串将被添加到列表的末尾,如果设置了LBS_SORT风格,字符串会按排序规律插入到列表中. int InsertString( int nIndex, LPCTSTR lpszItem ); 该函数用来在列表框中的指定位置插入字符串.参数nIndex给出了插入位置(索引),如果值为-1,则字符串将被添加到列表的末尾.参数lpszItem指定了要插入的字符串.函数返回实际的插入位置,若发生错误,会返回LB_ERR或LB_ERRSPACE.与AddString函数不同,InsertString函数不会导致LBS_SORT 风格的列表框重新排序.不要在具有LBS_SORT风格的列表框中使用InsertString函数,以免破坏列表项的次序. int DeleteString( UINT nIndex ); 该函数用于删除指定的列表项,其中参数nIndex指定了要删除项的索引.函数的返回值为剩下的表项数目,如果nIndex超过了实际的表项总数,则返回LB_ERR.

相关主题
相关文档
最新文档