Private Sub Command1_Click() lvList.GridLines = Not lvList.GridLines SetBackColor lvList, vbRed, vbWhite End Sub Private Sub Form_Load() Dim i As Long, lvItem As ListItem For i = 1 To 450 Set lvItem = lvList.ListItems.Add(, , "演示 " & i) If i Mod 2 = 0 Then lvItem.Checked = True Else lvItem.Checked = False Next i SetBackColor lvList, picBoard, vbRed, vbGreen End Sub Private Function SetBackColor(lvList As ListView, picBoard As PictureBox, CheckColor As ColorConstants, unCheckColor As ColorConstants) Dim iWidth As Single, iHeight As Single, tHeight As Single, lMatch As Single Dim i As Long With picBoard .AutoRedraw = True .BackColor = lvList.BackColor .Cls .Visible = False .ScaleMode = vbTwips .Width = lvList.Width + 100 .Height = lvList.ListItems(1).Height * (lvList.ListItems.Count + 1) With .Font .Size = lvList.Font.Size + 2.75 .Bold = lvList.Font.Bold .Charset = lvList.Font.Charset .Italic = lvList.Font.Italic .Name = lvList.Font.Name .Strikethrough = lvList.Font.Strikethrough .Underline = lvList.Font.Underline .Weight = lvList.Font.Weight End With iWidth = .Width For i = 1 To lvList.ListItems.Count If i = 1 Then lMatch = lvList.ListItems(i).Top - lvList.ListItems(i).Height tHeight = lvList.ListItems(i).Top - lvList.ListItems(i).Height - lMatch iHeight = lvList.ListItems(i).Height If lvList.ListItems(i).Checked Then picBoard.Line (0, tHeight)-(iWidth, tHeight + iHeight), CheckColor, BF Else picBoard.Line (0, tHeight)-(iWidth, tHeight + iHeight), unCheckColor, BF End If Next End With lvList.Picture = picBoard.Image End Function |