行与单元格的样式

为了便于学习本节的内容,可以先打开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、列没有样式。


本页地址:http://www.foxtable.com/webhelp/topics/2779.htm