Private Sub ReaderDataListBox_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ReaderDataListBox.DrawItem
' Set the DrawMode property to draw fixed sized items.
sender.DrawMode = DrawMode.OwnerDrawFixed
' Draw the background of the ListBox control for each item.
e.DrawBackground()
' Create a new Brush and initialize to a Black colored brush by default.
Dim myBrush As Brush
'If e.State And DrawItemState.Selected = DrawItemState.Selected Then
'myBrush = Brushes.White
'Else
myBrush = Brushes.Black
'End If
Dim seperator As Char() = {Microsoft.VisualBasic.ChrW(Keys.Tab)}
If e.Index >= 0 Then
Dim strings As String() = CType(sender.items(e.Index), String).Split(seperator, 3)
' we should have 3
' find width of column1
Const col1_width As Integer = 100
Const col3_width As Integer = 130
Dim col1_start As Integer = e.Bounds.X
Dim col2_start As Integer = e.Bounds.X + col1_width
Dim col2_width As Integer = e.Bounds.Width - col1_width - col3_width
Dim col3_start As Integer = e.Bounds.X + col1_width + col2_width
' Draw the current item text based on the current Font and the custom brush settings.
e.Graphics.DrawString(strings(0), e.Font, myBrush, New RectangleF(col1_start, e.Bounds.Y, col1_width, e.Bounds.Height))
e.Graphics.DrawString(strings(1), e.Font, myBrush, New RectangleF(col2_start, e.Bounds.Y, col2_width, e.Bounds.Height))
e.Graphics.DrawString(strings(2), e.Font, myBrush, New RectangleF(col3_start, e.Bounds.Y, col3_width, e.Bounds.Height))
End If
' If the ListBox has focus, draw a focus rectangle around the selected item.
e.DrawFocusRectangle()
End Sub