Ok whats going on here... got a couple problems... this is relevant now to
this group since .NET 2.0 is finally RTM
1) draws really slow when making it a large form (resizing speed is jerky)
to a res from 100x100 to 1280x1024 once it gets above 500x500 it starts
jerking you can see the screen refreshing as it paints
2) sometimes the background selection when you select multiple items then
move the mouse around on the screen dissapear (turn white) mainly column 0
background
3) the focus selection rectangle is black only, it should be inversed of the
selection color shouldnt it? so it would stand out, when its not owner drawn
and the selection color is dark blue the focus rectangle draws yellow, in
owner drawn it draws black and is impossible to see on a dark background
here is my example code.. (all images in image list are 16x16 PNG images
with very little transparent alpha channel pixels)
<Global.Microso ft.VisualBasic. CompilerService s.DesignerGener ated()> _
Partial Class Form1
Inherits System.Windows. Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnos tics.DebuggerNo nUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso components IsNot Nothing Then
components.Disp ose()
End If
MyBase.Dispose( disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.Componen tModel.IContain er
'NOTE: The following procedure is required by the Windows Form
Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnos tics.DebuggerSt epThrough()> _
Private Sub InitializeCompo nent()
Me.components = New System.Componen tModel.Containe r
Dim resources As System.Componen tModel.Componen tResourceManage r = New
System.Componen tModel.Componen tResourceManage r(GetType(Form1 ))
Me.ListView1 = New System.Windows. Forms.ListView
Me.ColumnHeader 1 = New System.Windows. Forms.ColumnHea der
Me.ColumnHeader 2 = New System.Windows. Forms.ColumnHea der
Me.ColumnHeader 3 = New System.Windows. Forms.ColumnHea der
Me.ColumnHeader 4 = New System.Windows. Forms.ColumnHea der
Me.ColumnHeader 5 = New System.Windows. Forms.ColumnHea der
Me.ColumnHeader 6 = New System.Windows. Forms.ColumnHea der
Me.ImageList1 = New System.Windows. Forms.ImageList (Me.components)
Me.SuspendLayou t()
'
'ListView1
'
Me.ListView1.Co lumns.AddRange( New System.Windows. Forms.ColumnHea der()
{Me.ColumnHeade r1, Me.ColumnHeader 2, Me.ColumnHeader 3, Me.ColumnHeader 4,
Me.ColumnHeader 5, Me.ColumnHeader 6})
Me.ListView1.Do ck = System.Windows. Forms.DockStyle .Fill
Me.ListView1.Fu llRowSelect = True
Me.ListView1.Lo cation = New System.Drawing. Point(0, 0)
Me.ListView1.Na me = "ListView1"
Me.ListView1.Ow nerDraw = True
Me.ListView1.Si ze = New System.Drawing. Size(627, 412)
Me.ListView1.Sm allImageList = Me.ImageList1
Me.ListView1.Ta bIndex = 0
Me.ListView1.Us eCompatibleStat eImageBehavior = False
Me.ListView1.Vi ew = System.Windows. Forms.View.Deta ils
'
'ColumnHeader1
'
Me.ColumnHeader 1.Name = "ColumnHead er1"
'
'ColumnHeader2
'
Me.ColumnHeader 2.Name = "ColumnHead er2"
'
'ColumnHeader3
'
Me.ColumnHeader 3.Name = "ColumnHead er3"
'
'ColumnHeader4
'
Me.ColumnHeader 4.Name = "ColumnHead er4"
'
'ColumnHeader5
'
Me.ColumnHeader 5.Name = "ColumnHead er5"
'
'ColumnHeader6
'
Me.ColumnHeader 6.Name = "ColumnHead er6"
'
'ImageList1
'
Me.ImageList1.I mageStream =
CType(resources .GetObject("Ima geList1.ImageSt ream"),
System.Windows. Forms.ImageList Streamer)
Me.ImageList1.T ransparentColor = System.Drawing. Color.Transpare nt
Me.ImageList1.I mages.SetKeyNam e(0, "Script-2.png")
Me.ImageList1.I mages.SetKeyNam e(1, "About.png" )
Me.ImageList1.I mages.SetKeyNam e(2, "Clock.png" )
Me.ImageList1.I mages.SetKeyNam e(3, "Debug-Watch.png")
'
'Form1
'
Me.AutoScaleDim ensions = New System.Drawing. SizeF(6.0!, 13.0!)
Me.AutoScaleMod e = System.Windows. Forms.AutoScale Mode.Font
Me.ClientSize = New System.Drawing. Size(627, 412)
Me.Controls.Add (Me.ListView1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout (False)
End Sub
Friend WithEvents ListView1 As System.Windows. Forms.ListView
Friend WithEvents ColumnHeader1 As System.Windows. Forms.ColumnHea der
Friend WithEvents ColumnHeader2 As System.Windows. Forms.ColumnHea der
Friend WithEvents ColumnHeader3 As System.Windows. Forms.ColumnHea der
Friend WithEvents ColumnHeader4 As System.Windows. Forms.ColumnHea der
Friend WithEvents ColumnHeader5 As System.Windows. Forms.ColumnHea der
Friend WithEvents ColumnHeader6 As System.Windows. Forms.ColumnHea der
Friend WithEvents ImageList1 As System.Windows. Forms.ImageList
End Class
Public Class Form1
Private Sub Form1_Load(ByVa l sender As System.Object, ByVal e As
System.EventArg s) Handles MyBase.Load
For i As Integer = 0 To 400
Dim lvitem As New ListViewItem
With lvitem
.Text = "test"
.SubItems.Add(" 1")
.SubItems.Add(" 2")
.SubItems.Add(" 3")
.SubItems.Add(" 4")
.SubItems.Add(" 5")
End With
Me.ListView1.It ems.Add(lvitem)
Next
End Sub
Private Sub ListView1_DrawC olumnHeader(ByV al sender As Object, ByVal e
As System.Windows. Forms.DrawListV iewColumnHeader EventArgs) Handles
ListView1.DrawC olumnHeader
e.DrawDefault = True
End Sub
Private Sub ListView1_DrawS ubItem(ByVal sender As Object, ByVal e As
System.Windows. Forms.DrawListV iewSubItemEvent Args) Handles
ListView1.DrawS ubItem
e.DrawBackgroun d()
If (e.ItemState And ListViewItemSta tes.Selected) <> 0 Then
e.Graphics.Fill Rectangle(Drawi ng.SystemBrushe s.ActiveCaption ,
e.Bounds)
e.DrawFocusRect angle(e.Bounds)
e.Graphics.Draw String(e.Item.T ext, Me.ListView1.Fo nt,
Drawing.SystemB rushes.Highligh tText, e.Bounds.X, e.Bounds.Y)
Else
e.Graphics.Draw String(e.Item.T ext, Me.ListView1.Fo nt,
Drawing.SystemB rushes.WindowTe xt, e.Bounds.X, e.Bounds.Y)
End If
If e.ColumnIndex = 3 Then
e.Graphics.Draw Image(Me.ImageL ist1.Images(2), e.Bounds.X, e.Bounds.Y)
End If
End Sub
End Class