ListView 控件可以用来显示各项带图标的列表,也可以用来显示带有子项的列表,Windows操作系统的资源管理器中文件夹窗口就是最好的应用例子。如下图一所示就是“我的电脑”中使用ListView 控件来显示本机所有盘符:
说明:可以通过“查看”菜单来观察其它三种显示方式,这些都是ListView的视图模式之一。
下面我们就先来了解下ListView控件的基本应用,在vb.net中的工具箱中,ListView 控件的图标如下图二所示:
一、View 属性
ListView 控件作为一个可以显示图标或者子项的列表控件,它最重要的属性就是 View 属性,该属性决定了以哪种视图模式显示控件的项,这四种视图模式分别如下:
1、LartIcon:大图标视图模式,在项的文本旁显示大的图标,在控件宽度足够的情况下,项是如图一中的盘符一样优先以平行排列的,排列不完的则自动换行显示在新行中。
2、SmallIcon:小图标视图模式,与大图标模式一样,但是显示的是小的图标。
3、List:列表视图模式,显示小图标,但是项是垂直排列的,只显示单列。
4、Details:详细资料视图模式,是最丰富的选项,它不但允许您查看项,还允许您查看为各项指定的任何子项。各项在网格中显示,它们垂直排列且其子项会显示在列中(带有列标头)。对应地,只有在Details 视图模式中起作用的控件属性为:GridLines 和 FullRowSelect,GridLines 属性指示在包含控件中项及其子项的行和列之间是否显示网格线。FullRowSelect 属性指示单击某项是否选择其所有子项(即整行选中),如下图三所示便是GridLines 和 FullRowSelect 属性都设置为True的情况:
ListView 控件中还有一个HeaderStyle 属性也是在Details 视图模式下才起作用,HeaderStyle 属性指示列标头样式,它有下面三种显示样式:
1、Clickable:列标头的作用类似于按钮,单击时可以执行操作(例如排序)。
2、Nonclickable:列标头不响应鼠标单击。
3、None:列标头在报表视图中不显示。
二、Items 属性
此外,ListView 控件最重要的属性是 Items 属性,它包含了控件所有的存在的项。SelectedItems 属性是控件当前选定项的集合,同时和它关联的 SelectedIndices 属性是控件中选定项的索引集合,如下示例所示,我们分别在SelectedItems 属性和SelectedIndices 属性中获取所选项索引,窗体上拖放了ListView控件和一个Button 控件,且已经往ListView控件中添加了若干列和行,代码如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer = 0
Dim str As String = ""
For i = 0 To ListView1.SelectedItems.Count - 1
str = str & "选中项索引=" & ListView1.SelectedItems.Item(i).Index.ToString & ";"
str = str & "在控件中的索引=" & ListView1.SelectedIndices.Item(i).ToString & vbCr
Next
MessageBox.Show(str)
End Sub
运行后显示效果如下图四所示:
两个属性都能获得所选项在控件中的索引,我们在实际应用的时候可以灵活选择使用它们中的一个,以达到简化代码的目的。
三、ListView 的其他重要属性
ListView 控件还有一些比较常用的重要属性
1、Activation 属性
Activation 属性指定用户激活 ListView 控件中的项的方式,它包括三个可选值:
OneClick:用户必须单击以激活项。光标更改为手形指针光标,项文本在用户将鼠标指针移动到项上时更改颜色。
Standard:用户必须双击以激活项。在用户将鼠标指针移动到项上时没有提供任何反馈。
TwoClick:用户必须双击以激活项,项文本在用户将鼠标指针移动到项上时更改颜色。
激活 ListView 中的项与只选择项是不同的。当激活某个项时,通常会在 ItemActivate 事件的事件处理程序中执行一个操作。例如,当激活某个项时,您可能会打开一个文件或显示一个允许用户对项进行编辑的对话框。通常,项的激活是通过用户对它进行双击来实现的。如果 Activation 属性设置为 OneClick,那么单击该项一次即可将其激活。将 Activation 属性设置为 TwoClick 与标准的双击不同,这是因为两次单击之间的时间间隔可以是任意的。
注意 如果将 Activation 属性设置为 ItemActivation.OneClick 或 ItemActivation.TwoClick,则不管 LabelEdit 属性的值是什么,都不允许进行标签编辑。
设置 Activation 属性实际上就是决定以何种方式来触发 ItemActivate 事件,如果我们需要在激活项的时候进行额外的操作,例如弹出一个关联的对话框来,则可以在 ItemActivate 事件中编写合适代码来完成,如下代码所示:
Private Sub ListView1_ItemActivate(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.ItemActivate
MessageBox.Show("你想做什么")'可以在这里添加我们需要的操作
End Sub
代码运行后,我们激活选项,如下图五所示:
2、LabelEdit 属性
LabelEdit 属性指示用户是否可以编辑控件中项的标签。
当 LabelEdit 属性设置为 true 时,用户可以单击项文本,将其选中,然后再次单击项文本,将标签文本置于编辑模式,然后,用户可以修改或替换项的文本标签。在用户编辑项文本之前和之后,您可以使用 BeforeLabelEdit 和 AfterLabelEdit 事件来执行任务。如果该属性设置为 true,则无法修改子项的文本。要更改子项的文本,您可以在用户双击控件中的子项时为其显示对话框。
3、LabelWrap 属性
LabelWrap 属性指示当项作为图标在控件中显示时,项标签是否换行。
当 LabelWrap 属性设置为 true 时,如果需要,项文本会换至文本的下一行。如果文本长于两行,则文本将缩短。如果用户选择了该项,则显示所有项文本。如果 LabelWrap 属性设置为 false,则所有项文本都将显示在单独一行中。整个项文本在 LabelWrap 设置为 false 时显示。只有在 View 属性设置为 LargeIcon 或 SmallIcon 时才使用该属性。
4、MultiSelect 属性
MultiSelect 属性指示是否可以选择多个项。当 MultiSelect 属性设置为 true 时,可在 ListView 控件中选择多个项。
5、Scrollable 属性
Scrollable 属性指示在没有足够空间来显示所有项时,是否显示滚动条。
6、Sorting 属性
Sorting 属性指示控件中项的排序顺序。
Sorting 属性允许指定项在 ListView 控件中是否排序。默认情况下,不执行排序。当 Sorting 属性设置为 Ascending 或 Descending 时,ListView 中的项自动按照升序字母顺序(当属性设置为 Ascending 时)或降序字母顺序(当属性设置为 Descending 时)进行排序。您可以使用该属性对 ListView 控件中显示的项进行自动排序,使用户在大量项可用时更容易查找到项。如果您要自己执行对项的排序,而不使用 Sorting 属性,可与 Sort 方法一起使用 ListViewItemSorter 属性。
7、LargeImageList 属性
LargeImageList 属性设置当项以大图标在控件中显示时使用的 ImageList。
8、SmallImageList 属性
SmallImageList 属性设置当项以小图标在控件中显示时使用的 ImageList。
上面我们了解了ListView 的一些主要属性,下面我们来看如何使用它。
四、向ListView 控件添加项
1、我们可以使用ListViewItem集合编辑器来为控件添加项
方法是在ListView 控件的属性窗口中选择Items属性。
2、还可以使用 ListView 控件的Items.Add()方法来为它添加新的项,Add()方法的格式如下:
Add(text,imageIndex)
text 为要添加项所显示的文本
imageIndex 为可选参数,指示所对应ImageList中的图标索引
示例:
为窗体添加一个ListView 控件,一个ImageList 控件,一个Button控件,然后在代码编辑器中添加如下代码:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim mItem As ListViewItem
Dim i As Integer = 0
ListView1.LargeImageList = Me.ImageList1
ListView1.View = View.LargeIcon
For i = 0 To 3
ListView1.Items.Add("Item " & i, i)
Next
End Sub
运行后,单击按钮,效果如下图六所示:
也可以使用如下代码来添加Item,其运行效果是一样的:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ListView1.LargeImageList = Me.ImageList1
ListView1.View = View.LargeIcon
Dim item0 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.LargeImageList = Me.ImageList1
ListView1.Items.AddRange(New ListViewItem() {item0, item1, item2, item3})
End Sub
五、为ListView 控件添加列标题
当我们使用ListView 控件的Details 视图模式的时候,就必须为控件添加对应的列标题,才能显示出它所有的项。
1、视图模式下添加列标题
一般我们显示一个列表的时候,其列标题都应该是固定的,所以我们可以在视图模式中预先设置好列标题,这样比较直观。
先选中ListView 控件,然后在它的属性窗口中找到 Columns 属性,单击后面的省略符号,如下图七所示:
然后在弹出的集合编辑器中添加和删除列标题即可,我们可以在编辑器的右边中编辑对应的列显示的文本、宽度以及文字对齐方式,如下图八所示:
添加完列标题之后记得把ListView 控件的View 属性设置为 Details,才能显示出列标题来。
2、使用代码来添加列标题
我们可以使用Columns.Add方法来动态添加列标头,使用Columns.Clear()方法来清除所有的列标头,如下代码所示,动态添加四个列标题,其中每个列头的宽为50,
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ListView1.View = View.Details
ListView1.GridLines = True
ListView1.Columns.Clear()
ListView1.Columns.Add("列 1", 50, HorizontalAlignment.Left)
ListView1.Columns.Add("列 2", 50, HorizontalAlignment.Left)
ListView1.Columns.Add("列 3", 50, HorizontalAlignment.Left)
ListView1.Columns.Add("列 4", 50, HorizontalAlignment.Center)
ListView1.Refresh()
End Sub
运行后,单击按钮,效果如下图九所示:
本章我们主要是了解ListView 控件的基本使用,看到这里相信你也基本上会用它在自己的程序中显示列表了。请继续关注我们巧巧读书网,下一章,我们将去看看如何使用ListView控件模仿Windows操作系统中的文件夹显示效果。
很详细,转载别人的,原产地:vb.net入门——ListView 控件的使用 - 站长学院
http://edu.cnzz.cn/NewsInfo/10927_2.aspx