行与单元格的样式
为了便于学习本节的内容,可以先打开CaseStudy目录下的文件“ListView.Table”,并参考该文件名为“示例十三”的窗口。
ListView的行有个Cell属性,可以获取此行指定列单元格。
ListView的行和单元格都可以设置样式,包括字体、背景颜色和字体颜色:
以上面的图为例,假定要用蓝底白字整行显示东正教国家,以红底白字标出人口列中数值超过10000的单元格,代码为:
Dim
lvw
As
WinForm.ListView
=
e.Form.Controls("ListView1")
lvw.StopRedraw()
'暂停绘制
lvw.Columns.Clear()
'清除原来的列
lvw.Rows.Clear()
'清除原来的行
lvw.Images.Clear()
'清除原来的图片
lvw.View
=
ViewMode.Details
'显示模式为详细信息
lvw.GridLines
= True
'显示网格线
Dim
cls()
As
String
=
{"国家","人口","面积","语言","宗教","洲"}
'指定要显示的各列
Dim
wds()
As
Integer
=
{100,100,130,80,80,80}
'定义列宽
For
i
As
Integer
=
0
To
cls.Length
-
1
Dim
c
As
WinForm.ListViewColumn
=
lvw.Columns.Add()
c.Name
=
cls(i)
'指定列名
c.Text
=
cls(i)'指定列标题
c.Width
=
wds(i)
'指定列宽
Next
lvw.Columns("人口").Text
=
"人口(万)"
'修改人口列的标题
lvw.Columns("人口").TextAlign
=
HorizontalAlignment.Right
'人口列靠右对齐
lvw.Columns("面积").TextAlign
=
HorizontalAlignment.Right
'面积列靠右对齐
For Each
dr
As
DataRow
In DataTables("国家").DataRows
'从数据表中提取数据
Dim
Key
As
String
=
dr("图标")
Dim
vr
As
WinForm.ListViewRow
=
lvw.Rows.Add()
'增加一行
lvw.Images.AddSmallImage(Key,
Key
&
".ico")
'添加代表这个国家的图标
vr.ImageKey
=
Key
'指定图标键值
For Each
cl
As
String
In
cls
'逐列取值
Select Case
cl
Case
"人口","面积"
'如果是人口列或面积列
vr(cl)
=
format(dr(cl),"#,000")
'则显示千位分割符号
Case Else
vr(cl)
=
dr(cl)
End Select
Next
If
dr("宗教")
= "东正教"
Then
'用蓝底白字整行显示东正教国家
vr.BackColor
= Color.Blue
Vr.ForeColor
= Color.White
End If
If
dr("人口")
> 10000
Then
'人口列数值大于10000的单元格,用红底白字显示
vr.CellUseRowStyle
= False
'必须将行的CellUseRowStyle属性设置为False,才能单独设置此行单元格的格式
With
vr.Cells("人口")
.BackColor
= Color.Red
.ForeColor
= Color.White
End With
End If
Next
lvw.ResumeRedraw()
'恢复绘制
一些提示:
1、在默认情况下,对于单元格格式的设置是不会生效的,只有将行的CellUseRowStyle属性设置为False,才能单独设置此行单元格的样式。
2、列没有样式。