'Declare handlers for these 2 events and set listbox to ownerdraw mode
Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
Me.lbBusMon.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable
'tell windows we are interested in drawing items in ListBox on our own
AddHandler Me.lbBusMon.DrawItem, AddressOf Me.DrawItemHandler
'tell windows we are interested in providing item size
AddHandler Me.lbBusMon.MeasureItem, AddressOf Me.MeasureItemHandler
End Sub
'event hadnler for drawing
Private Sub DrawItemHandler(ByVal sender As Object, ByVal e As DrawItemEventArgs)
e.DrawBackground()
e.DrawFocusRectangle()
Dim useImage As Image = Nothing
e.Graphics.DrawString(lbBusMon.Items.Item(e.Index), New Font(FontFamily.GenericSansSerif, _
8, FontStyle.Regular), New SolidBrush(Color.Black), e.Bounds)
'load image from an ImageList control
useImage = ilListBox.Images(1)
If Not (useImage Is Nothing) Then
Dim sz As SizeF = useImage.PhysicalDimension
Dim x As Integer = CType(e.Bounds.Right - 20, Integer)
Dim y As Integer = CType((e.Bounds.Bottom + e.Bounds.Top) / 2 - sz.Height / 2, Integer)
e.Graphics.DrawImage(useImage, x, y)
End If
End Sub 'DrawItemHandler
'event handler for size
Private Sub MeasureItemHandler(ByVal sender As Object, ByVal e As MeasureItemEventArgs)
e.ItemHeight = 14
End Sub 'MeasureItemHandler
|