


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ListView 控件可以用来显示各项带图标的列表,也可以用来显示带有子项的列表, Windows 操作系统的资源管理器中文件夹窗口就是 最好的应用例子。如下图一所示就是 “我的电脑 ”中使用 ListView 控件来显示本机所有盘符:图片说明:可以通过 “查看”菜单来观察其它三种显示方式,这些都是 ListView 的视图模式之一。下面我们就先来了解下 ListView 控件的基本应用,在 中的工具箱中, ListView 控件的图标如下图二所示:图片一、View 属性ListView 控件作为一个可以显示图标或者子项的列表控件,它最重要的属性就是 View 属性,该属性决定了以哪种视图模式
2、显示控件 的项,这四种视图模式分别如下:1、Lartlcon :大图标视图模式,在项的文本旁显示大的图标,在控件宽度足够的情况下,项是如图一中的盘符一样优先以平行排列的, 排列不完的则自动换行显示在新行中。2、Smalllcon:小图标视图模式,与大图标模式一样,但是显示的是小的图标。3、List:列表视图模式,显示小图标,但是项是垂直排列的,只显示单列。4、Details:详细资料视图模式,是最丰富的选项,它不但允许您查看项,还允许您查看为各项指定的任何子项。各项在网格中显示,它们垂直排列且其子项会显示在列中(带有列标头)。对应地,只有在Details 视图模式中起作用的控件属性为: Gri
3、dLines 和FullRowSelect, GridLines 属性指示在包含控件中项及其子项的行和列之间是否显示网格线。FullRowSelect 属性指示单击某项是否选择其所有子项(即整行选中),如下图三所示便是 GridLines和FullRowSelect属性都设置为True的情况:图片ListView 控件中还有一个 HeaderStyle 属性也是在 Details 视图模式下才起作用, HeaderStyle 属性指示列标头样式, 它有下面三种显示 样式:1、Clickable:列标头的作用类似于按钮,单击时可以执行操作(例如排序)。2、Nonclickable :列标头不响应
4、鼠标单击。3、None:列标头在报表视图中不显示。二、ltems 属性此外, ListView 控件最重要的属性是 ltems 属性,它包含了控件所有的存在的项。 Selectedltems 属性是控件当前选定项的集合,同时 和它关联的 Selectedlndices 属性是控件中选定项的索引集合,如下示例所示,我们分别在 Selectedltems 属性和 Selectedlndices 属性 中获取所选项索引,窗体上拖放了 ListView 控件和一个 Button 控件,且已经往 ListView 控件中添加了若干列和行,代码如下:Private Sub Button1_Click(By
5、Val sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim i As lnteger = 0Dim str As String = ""NextMessageBox.Show(str)End Sub 运行后显示效果如下图四所示:图片 两个属性都能获得所选项在控件中的索引,我们在实际应用的时候可以灵活选择使用它们中的一个,以达到简化代码的目的。三、ListView 的其他重要属性ListView 控件还有一些比较常用的重要属性1、Activation 属性Activati
6、on 属性指定用户激活 ListView 控件中的项的方式,它包括三个可选值:OneClick:用户必须单击以激活项。光标更改为手形指针光标,项文本在用户将鼠标指针移动到项上时更改颜色。Standard :用户必须双击以激活项。在用户将鼠标指针移动到项上时没有提供任何反馈。TwoClick :用户必须双击以激活项,项文本在用户将鼠标指针移动到项上时更改颜色。激活 ListView 中的项与只选择项是不同的。当激活某个项时,通常会在 ItemActivate 事件的事件处理程序中执行一个操作。例如,当 激活某个项时,您可能会打开一个文件或显示一个允许用户对项进行编辑的对话框。通常,项的激活是通过
7、用户对它进行双击来实现的。如果 Activation属性设置为 OneClick,那么单击该项一次即可将其激活。将Activation属性设置为 TwoClick与标准的双击不同,这是因为两次单击之间的时间间隔可以是任意的。注意 ? 如果将 Activation 属性设置为 ItemActivation.OneClick 或 ItemActivation.TwoClick ,则不管 LabelEdit 属性的值是什么, 都不允 许进行标签编辑。设置 Activation 属性实际上就是决定以何种方式来触发 ItemActivate 事件,如果我们需要在激活项的时候进行额外的操作,例如弹出 一个
8、关联的对话框来,则可以在 ? ItemActivate 事件中编写合适代码来完成,如下代码所示:Private Sub ListView1_ItemActivate(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.ItemActivateMessageBox.Show(”你想做什么")'可以在这里添加我们需要的操作End Sub代码运行后,我们激活选项,如下图五所示:图片2、LabelEdit 属性LabelEdit 属性指示用户是否可以编辑控件中项的标签。当 LabelEdit 属
9、性设置为 true 时,用户可以单击项文本,将其选中,然后再次单击项文本,将标签文本置于编辑模式,然后,用户可 以修改或替换项的文本标签。在用户编辑项文本之前和之后,您可以使用BeforeLabelEdit 和 AfterLabelEdit 事件来执行任务。如果该属性设置为true,则无法修改子项的文本。要更改子项的文本,您可以在用户双击控件中的子项时为其显示对话框。3、LabelWrap 属性LabelWrap 属性指示当项作为图标在控件中显示时,项标签是否换行。当 LabelWrap 属性设置为 true 时,如果需要,项文本会换至文本的下一行。如果文本长于两行,则文本将缩短。如果用户选择
10、了该项,则显示所有项文本。如果LabelWrap属性设置为false,则所有项文本都将显示在单独一行中。整个项文本在LabelWrap设置为false 时显示。只有在 View 属性设置为 LargeIcon 或 SmallIcon 时才使用该属性。4、MultiSelect 属性MultiSelect 属性指示是否可以选择多个项。当 MultiSelect 属性设置为 true 时,可在 ListView 控件中选择多个项。5、Scrollable 属性Scrollable 属性指示在没有足够空间来显示所有项时,是否显示滚动条。6、Sorting 属性Sorting 属性指示控件中项的排序顺
11、序。Sorting 属性允许指定项在 ListView 控件中是否排序。 默认情况下, 不执行排序。 当 Sorting 属性设置为 Ascending 或 Descending 时, ListView 中的项自动按照升序字母顺序(当属性设置为 Ascending 时)或降序字母顺序(当属性设置为 Descending 时)进行排序。 您可以使用该属性对 ListView 控件中显示的项进行自动排序, 使用户在大量项可用时更容易查找到项。 如果您要自己执行对项的排序, 而不使用 Sorting 属性,可与 Sort 方法一起使用 ListViewItemSorter 属性。7、LargeIma
12、geList 属性LargeImageList 属性设置当项以大图标在控件中显示时使用的ImageList。8、SmallImageList 属性SmallImageList 属性设置当项以小图标在控件中显示时使用的ImageList。上面我们了解了 ListView 的一些主要属性,下面我们来看如何使用它。四、向 ListView 控件添加项1、我们可以使用 ListViewItem 集合编辑器来为控件添加项方法是在 ListView 控件的属性窗口中选择 Items 属性。2、还可以使用 ListView控件的ltems.Add()方法来为它添加新的项,Add()方法的格式如下:Add(t
13、ext,imageIndex)text 为要添加项所显示的文本imageindex为可选参数,指示所对应ImageList中的图标索引示例:为窗体添加一个 ListView 控件,一个 ImageList 控件,一个 Button 控件,然后在代码编辑器中添加如下代码 :Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim mItem As ListViewItemDim i As Integer = 0ListView1.La
14、rgeImageList = Me.ImageList1ListView1.View = View.LargeIconFor i = 0 To 3NextEnd Sub运行后,单击按钮,效果如下图六所示:图片也可以使用如下代码来添加Item,其运行效果是一样的:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonl.ClickListViewl.LargelmageList = Mem ageList1ListView1.View = View.L
15、argeIconDim itemO As New ListViewItem("item 0", 0)Dim item1 As New ListViewItem("item 1", 1)Dim item2 As New ListViewItem("item 2", 2)Dim item3 As New ListViewItem("item 3", 3)ListView1.LargelmageList = Mem ageList1End Sub五、为ListView控件添加列标题当我们使用ListView控件的Deta
16、ils视图模式的时候,就必须为控件添加对应的列标题,才能显示出它所有的项。1、视图模式下添加列标题一般我们显示一个列表的时候,其列标题都应该是固定的,所以我们可以在视图模式中预先设置好列标题,这样比较直观。先选中ListView控件,然后在它的属性窗口中找到Columns属性,单击后面的省略符号,如下图七所示:图片然后在弹岀的集合编辑器中添加和删除列标题即可,我们可以在编辑器的右边中编辑对应的列显示的文本、宽度以及文字对齐方式,如下图八所示:图片添加完列标题之后记得把ListView控件的View属性设置为 Details,才能显示出列标题来。2、使用代码来添加列标题我们可以使用Columns
17、.Add方法来动态添加列标头,使用Columns.Clear()方法来清除所有的列标头,如下代码所示,动态添加四个列标 题,其中每个列头的宽为 50,Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickListView1.View = View.DetailsListView1.GridLines = TrueListVListView1.Refresh()End Sub1. Option Explicit3.Private Sub
18、Form_Load()4. ? ? ListViewl.FullRowSelect = True5.6.7.8.9.10.5. ? ?6. ? ? Dim fName As String7. ? ? If Len(App.Path) = 3 Then8. ? ? ?fName = App.Path & "学生名单.xls"9. ? ? Else10. 学生名单.xls"11. ? ? End If12. ? ? GetExcelData fName, ListView113. End Sub20.21. Private Sub GetExcelData(B
19、yVal fileName As String, ByRef lvw As ListView)22. ? ? Dim MyXl As Object23.24. ? ?' 测试 Microsoft Excel的副本是否在运行。25. ? ? On Error Resume Next? ?'延迟错误捕获。26. ? ?'不带第一个参数调用Getobject 函数将27. ? ?'返回对该应用程序的实例的引用。28. ? ?'如果该应用程序不在运行,则会产生错误。29. ? ? Set MyXl = GetObject(, "Excel.Applic
20、ation")30. ? ? If Err.Number > 0 Then31. ? ? ?Err.Clear? ?'如果发生错误则要清除Err 对象。32. ? ? ?Set MyXl = CreateObject("Excel.Application")33. ? ? End If34. ? ?35. ? ? Dim wsBook As Workbook36. ? ? Dim wsSheet As Worksheet38. ? ? Set MyXI = GetObject(fileName)39. ? ?40.41.42.40. ? ?'
21、在此处对文件41. ? ?'进行操作。45.46. ? ? Set wsSheet = wsBook.Worksheets("Sheet1")47. ? ?48. ? ? With wsSheet49. ? ? ?Dim row As Long50. ? ? ?row = .Cells.SpecialCells(xlCellTypeLastCell).row51. ? ? ?Dim i As Long52. ? ? ?Dim itmX As Listitem53. ? ? ?For i = 2 To row54.55. ? ? ?itmX.Subltems=.Cel
22、ls(i,3)56. ? ? ?itmX.SubItems(2)=.Cells(i,4)57. ? ? ?itmX.SubItems(3)=.Cells(i,5)58. ? ? ?itmX.SubItems(4)=.Cells(i,6)59. ? ? ?Next60. ? ? End With61.62. ? ? MyXI.Application.DisplayAlerts = False63. ? ?64.65.64. ? ? Set MyXl = Nothing? ?'释放对该应用程序65. ? ? ? ? ? ? ? ? ?'和电子数据表的引用。66. End Sub69
23、.70. Private Sub ListView1_ltemClick(ByVal Item As MSComctlLib .L istltem)71. ? ? Textl = Item.Text72. ? ? Text2 = Item.SubItems(1)73. ? ? Text3 = ltem.Subltems(2)74. ? ? Text4 = Item.SubItems(3)75. ? ? Text5 = Item.SubItems(4)76. End SubPublic Sub LVrefresh(Optio nal ByVai Sta ndardType As Boolea n
24、)Dim in tRow As In teger, strTemp As Stri ngDim fileNo As In teger, fileName As Stri ngDim Fp As New FileSystemObjectDim strTs As TextStreamDim ListItemTemp As ListItemOn Error Resume NextfileNo = FreeFileWith ListViewl.Colum nH eaders.Clear丄 istltems.Clear.ColumnHeaders.Add ," 姓名".Colum n
25、H eaders(1).Width = 1200.ColumnHeaders.Add ," 年龄".Colum nH eaders(2).Width = 900.ColumnHeaders.Add ," 职位".Colum nH eaders(3).Width = 2000.ColumnHeaders.Add ,"联系电话".Colum nH eaders(4).Alig nment = lvwColum nLeft.Colum nH eaders(4).Width = 2000in tRow = 1fileName = llf(Le
26、ft(App.Path, 1) = "", App.Path & "1.txt", App.Path & "1.txt")Set strTs = Fp.Ope nTextFile(fileName)strTemp = strTs.ReadLi neDo While Err.Number = 0If i ntRow = 1 The nSet ListItemTemp = .ListItems.Add(, , strTemp)ElseListItemTemp.SubItems(i ntRow - 1) = strTempE
27、nd IfIf i ntRow = 4 The nin tRow = 1Elsein tRow = in tRow + 1End IfstrTemp = strTs.ReadLi neLoopEnd WithEnd SubPrivate Sub Comma nd1_Click()LVrefreshEnd SubPublic Sub LVrefresh(Optio nal ByVai Sta ndardType As Boolea n)Dim in tRow As In teger, strTemp As Stri ngDim fileNo As In teger, fileName As St
28、ri ngDim Fp As New FileSystemObjectDim strTs As TextStreamDim ListItemTemp As ListitemOn Error Resume NextfileNo = FreeFileWith ListViewl.Colum nH eaders.Clear丄 istltems.Clear.ColumnHeaders.Add ," 姓名".Colum nH eaders(1).Width = 1200.ColumnHeaders.Add ," 年龄".Colum nH eaders(2).Wid
29、th = 900.ColumnHeaders.Add ," 职位".Colum nH eaders(3).Width = 2000.ColumnHeaders.Add ,"联系电话".Colum nH eaders(4).Alig nment = lvwColum nLeft.Colum nH eaders(4).Width = 2000in tRow = 1fileName = IIf(Left(App.Path, 1) = "", App.Path & "1.txt", App.Path & &
30、quot;1.txt")Set strTs = Fp.Ope nTextFile(fileName)strTemp = strTs.ReadLi neDo While Err.Number = 0If i ntRow = 1 The nSet ListItemTemp = .ListItems.Add(, , strTemp)ElseListltemTemp.Subltems(i ntRow - 1) = strTempEnd IfIf i ntRow = 4 The nin tRow = 1Elsein tRow = in tRow + 1End IfstrTemp = strTs
31、.ReadLi neLoopEnd WithEnd SubPrivate Sub Comma nd1_Click()LVrefreshEnd Sub常用属性:View 设置或返回控件的视图类型 值 说明1- LvwIcon 图标类型2- LvwSmallIcon 小图标类型3- LvwList 列表类型4- LvwReport 报表类型Arrange 设置后返回控件的图标排列方式 (在图标视图下有效 ) 值 说明1- LvwNone 不排列2- LvwAutoLeft 自动靠右排列3- LvwAutoTop 自动靠左排列Icons 、 SmallIcons 、 ColumnHeaderIcon
32、s 属性Icons 指定图标视图时的图标与 ImageList 的绑定SmallIcons 、 ColumnHeaderIcons 指定列表视图时的图标与 ImageList 的绑定PICTURE 、 PictureAlignment 属性 分别指定 ListView 控件的背景图片和布局方式ListItems(Index) 属性ListItems 属性是 ListView 控件中列表项的集合。 Index 用于指定列表项集合中的一个对象, 我们可以把这个对象看作对一行的引用ListItems 集合的属性1. Text 设置或返回显示文本2. key 关键字3. index 索引编号4. ic
33、on , smallicon 不同视图时显示单元格的图标5. checked 给 checkboxes 打 V6. selected 使处于选定状态7. ListSubitems ( index ) 集合 我们可以把这个集合看作对这行中单元格的引用Text 设置或返回单元格显示的内容Reporticon 设置单元格的图标8 Subitems(index) 设置或返回单元格文本 = ListSubitems (index ).textColumnHeaders(index) 属性ColumnHeaders 属性是 ListView 控件中列标头的集合1. text 显示标题文本2. key3.
34、index4. icon 指定标题图标5. alignment 指定 index 列的对齐方式 (注意:第一列也就是列表项不能指定)6. position 返回当前列的索引7. subitemindex 返回指定列的 listsubitem 索引TextBackgroud 属性决定 text 的背景是透明还是 ListView 的背景色值 0 lvwTransparent 透明1 lvw 不透明(用 listview 的背景色)Ghosted 属性 logic 决定是否虚状HideColumnHeaders 属性 隐藏表头LabelWrap 属性标签转行 View.LargeIcon 或 Vi
35、ew.SmallIcon 时才使用该属性 FullRowSelect整行显示HotTracking热点追踪 鼠标指针自动调整为手型HoverSelection 属性自动聚焦 鼠标指针自动调整为手型AllowColumnReorder 属性值设置 .t. 时,用户可以用鼠标选中 1 列拖至其他地方进行重新排列Sorted 属性当值为 .t. 时,列表按字母排序常用方法:ListItems.add(index,key,text,icon,smallicon)向 listitems 添加一列表项。Index 插入列表项的编号Key 插入列表项的关键字Text 插入列表项的文本Icon 当为图标视图时
36、要求显示的图标Smallicon 当为小图标视图时要求显示的图标Clear清除 listitems 集合中所有的列表项Remove 清除选定行L1=thisform.view1AllowColumnReorder 属性值设置 .t. 时,用户可以用鼠标选中 1 列拖至其他地方进行重新排列 常用事件:AfterLabelEdit 编辑当前选择的列表对象之后发生BeforeLabelEdit编辑当前选择的列表对象之前发生ItemClick单击某一列表对象时发生参数 item 对当前列表项的引用事件AfterLabelEdit :编辑 ListItem 对象的标签时被触发。BeforeLabelEd
37、it :编辑 ListItem 对象的标签后出发。ColumnClick :单击列标题时触发。参数中可以获得被单击的列对象。通常用于排序。ItemClick :单击某行或某 ListItem 时触发。参数中可以获得被单击的 ListItem 对象。方法FindItem :搜索 ListItem 对象。参数:string :搜索字符串。value :在 ListItem 的哪部分中搜索( LvwText 、 LvwSubItem 、 LvwTag ); index :开始搜索的位置。match :匹配方式。HitTest :检索位于特定坐标处的 ListItem 对象。vb 中的实例Privat
38、e Sub Form_load() '确保 ListView 控件的 view 属性为报表视图ListView1.View=lvwReport '添加三列'向控件添加 ListItem 对象。Dim itmX As ListItem'添加 column1 的名称。ColumnHeader'使用 SubItemIndex 将 SubItem 与正确的 ColumnHeader 关联。使用关键字 ("Sex") 指定正确的itmX.SubItems(ListView1.ColumnHeaders("Sex").SubI
39、temIndex)=" 男 "'使用 ColumnHeader 关键字将 SubItems 字符串与'正确的 ColumnHeader 关联。itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="19"itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男 "itmX.SubItems(ListView1.ColumnHeaders("A
40、ge").SubItemIndex)="22"itmX.SubItems(ListView1.ColumnHeaders("Sex").SubItemIndex)="男 "itmX.SubItems(ListView1.ColumnHeaders("Age").SubItemIndex)="24"End SubPrivate Sub ListView1_ColumnClick(ByVal ColumnHeader As ComctlLib.ColumnHeader)Select Case ColumnHeader.KeyCase "Sex":
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家乐福人员管理制度
- 家庭门口树管理制度
- 应急办日常管理制度
- 强电间安全管理制度
- 徐学校电脑管理制度
- 德克士收费管理制度
- 心电图维修管理制度
- 快递员宿舍管理制度
- 急救预案及管理制度
- 恶臭嗅觉室管理制度
- 2015年江苏省南通市中考真题语文试题(解析版)
- 大学物业服务月考核评价评分表
- 2023-2024学年广东省佛山市高二下学期7月期末考试物理试题(解析版)
- 超声波医学技术中级《专业实践能力》(题库)模拟试卷二
- 成人失禁相关性皮炎的预防与护理
- 泉州律师见证委托合同范本
- 血液透析容量管理理论知识考核试题及答案
- 车位转让协议书范文原
- 毕业研究生登记表(适用于江苏省)
- 仪器分析智慧树知到答案2024年临沂大学
- 教育学原理考试题及参考答案
评论
0/150
提交评论