Imports System.Drawing

Imports System.Windows.Forms



Public Class WrapedListBox

    Inherits System.Windows.Forms.ListBox



    Protected Overrides Sub OnMeasureItem(ByVal e As System.Windows.Forms.MeasureItemEventArgs)



        If DesignMode Then

            MyBase.OnMeasureItem(e)

            Exit Sub

        End If



        Dim proposedSize As Size = New Size(Me.ClientSize.Width, Integer.MaxValue)

        Dim flags As TextFormatFlags = TextFormatFlags.WordBreak

        Dim returnValue As Size = TextRenderer.MeasureText(e.Graphics, Me.Items(e.Index).ToString, Me.Font, proposedSize, flags)



        e.ItemWidth = returnValue.Width

        e.ItemHeight = returnValue.Height



        MyBase.OnMeasureItem(e)



    End Sub



    Protected Overrides Sub OnDrawItem(ByVal e As System.Windows.Forms.DrawItemEventArgs)



        If DesignMode Then

            MyBase.OnDrawItem(e)

            Exit Sub

        End If



        e.DrawBackground()



        Dim brush = New SolidBrush(e.ForeColor)

        e.Graphics.DrawString(Me.Items(e.Index).ToString, e.Font, brush, e.Bounds, StringFormat.GenericDefault)



        e.DrawFocusRectangle()



        MyBase.OnDrawItem(e)



    End Sub



End Class

