VB ListView 隔行背景

2019-04-15 16:32发布

Private Sub SetListViewColor(Lv As ListView, pic As PictureBox, LvCount As Long) Dim i As Integer pic.BackColor = Lv.BackColor Lv.Parent.ScaleMode = vbTwips pic.ScaleMode = vbTwips pic.BorderStyle = vbBSNone pic.AutoRedraw = True pic.Visible = False pic.Width = Screen.Width '因为我的LISTVIEW会自动调整大小的,所以直接用屏幕的宽度 pic.Height = Lv.ListItems(1).Height * LvCount '取得要添充的高度 pic.ScaleHeight = LvCount pic.ScaleWidth = 1 pic.DrawWidth = 1 '----------------------------- '画出每行LISTVIEW的颜 {MOD} '------------------------------ For i = 1 To LvCount If i / 2 = Int(i / 2) Then pic.Line (0, i - 1)-(1, i), &HC0FFFF, BF Else pic.Line (0, i - 1)-(1, i), 16777152, BF End If Next Lv.Picture = pic.Image End Sub Private Sub SetListViewColor(Lv As ListView, pic As PictureBox) Dim h As Single Dim sw As Single Dim oAltBackColor As OLE_COLOR oAltBackColor = pic.BackColor With Lv If .View = lvwReport Then If .ListItems.Count Then .PictureAlignment = lvwTile h = .ListItems(1).Height With pic .Visible = False .BackColor = Lv.BackColor .BorderStyle = 0 .Height = h * 2 .Width = 10 * Screen.TwipsPerPixelX sw = .ScaleWidth .AutoRedraw = True If StartAtOddRow Then pic.Line (0, 0)-Step(sw, h - Screen.TwipsPerPixelY), oAltBackColor, BF Else pic.Line (0, h)-Step(sw, h), oAltBackColor, BF End If Set Lv.Picture = .Image .AutoRedraw = False .BackColor = oAltBackColor End With .Refresh Exit Sub End If End If Set .Picture = Nothing End With End Sub