天天看點

一個自定義的ListBox

如何在标準的ListBox中增加自定義的Item

一個自定義的ListBox
一個自定義的ListBox

Public   Class ListStyle Class ListStyle

一個自定義的ListBox

    Inherits System.Windows.Forms.ListBox

一個自定義的ListBox
一個自定義的ListBox
一個自定義的ListBox

LineStyle Structure >>#Region "LineStyle Structure >>"

一個自定義的ListBox

    'line type: 

一個自定義的ListBox

    '   none(0)----->Custom

一個自定義的ListBox

    '   (1)---->Solid

一個自定義的ListBox

    '   (2)---->Dash

一個自定義的ListBox

    '   (3)---->Dot

一個自定義的ListBox

    '   (4)---->DashDot

一個自定義的ListBox

    '   (5)---->DashDotDot

一個自定義的ListBox
一個自定義的ListBox
一個自定義的ListBox

    Public Structure StyleStructure Style

一個自定義的ListBox

        Public LineType As System.Drawing.Drawing2D.DashStyle

一個自定義的ListBox

        Public LineWidth As Single

一個自定義的ListBox

        'Public LineColor As System.Drawing.Color

一個自定義的ListBox

    End Structure

一個自定義的ListBox
一個自定義的ListBox

#End Region

一個自定義的ListBox
一個自定義的ListBox
一個自定義的ListBox
一個自定義的ListBox

Property>>#Region "Property>>"

一個自定義的ListBox
一個自定義的ListBox
一個自定義的ListBox

    'current line style(0--15)

一個自定義的ListBox

    Private _lineStyle As Style

一個自定義的ListBox
一個自定義的ListBox

    Public Property LineStyle()Property LineStyle() As Style

一個自定義的ListBox

        Get

一個自定義的ListBox

            Return _lineStyle

一個自定義的ListBox

        End Get

一個自定義的ListBox

        Set(ByVal Value As Style)

一個自定義的ListBox

            _lineStyle = Value

一個自定義的ListBox

        End Set

一個自定義的ListBox

    End Property

一個自定義的ListBox
一個自定義的ListBox

    'current line color

一個自定義的ListBox

    Private _lineColor As Color

一個自定義的ListBox
一個自定義的ListBox

    Public Property LineColor()Property LineColor() As Color

一個自定義的ListBox

        Get

一個自定義的ListBox

            If _lineColor.Equals(Color.Empty) Then

一個自定義的ListBox

                _lineColor = Color.Black

一個自定義的ListBox

            End If

一個自定義的ListBox

            Return _lineColor

一個自定義的ListBox

        End Get

一個自定義的ListBox

        Set(ByVal Value As Color)

一個自定義的ListBox

            _lineColor = Value

一個自定義的ListBox

        End Set

一個自定義的ListBox

    End Property

一個自定義的ListBox
一個自定義的ListBox

    Private _alternate As Integer = 5

一個自定義的ListBox
一個自定義的ListBox
一個自定義的ListBox

#End Region

一個自定義的ListBox
一個自定義的ListBox
一個自定義的ListBox

Subs/Functions>>#Region "Subs/Functions>>"

一個自定義的ListBox
一個自定義的ListBox

    'draw the specified line in listbox

一個自定義的ListBox
一個自定義的ListBox

    Protected Overrides Sub OnDrawItem()Sub OnDrawItem(ByVal e As DrawItemEventArgs)

一個自定義的ListBox

        MyBase.OnDrawItem(e)

一個自定義的ListBox

        Me.DrawMode = DrawMode.OwnerDrawFixed

一個自定義的ListBox
一個自定義的ListBox

        If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then

一個自定義的ListBox

            Dim selectBrush As New SolidBrush(Me.BackColor)

一個自定義的ListBox

            e.Graphics.FillRectangle(selectBrush, e.Bounds)

一個自定義的ListBox

            Dim selectPen As New Pen(Color.Gray)

一個自定義的ListBox
一個自定義的ListBox

            selectPen.DashStyle = Drawing2D.DashStyle.Dash

一個自定義的ListBox

            e.Graphics.DrawRectangle(selectPen, e.Bounds)

一個自定義的ListBox
一個自定義的ListBox

        Else

一個自定義的ListBox

            Dim selectBrush As New SolidBrush(Me.BackColor)

一個自定義的ListBox

            e.Graphics.FillRectangle(selectBrush, e.Bounds)

一個自定義的ListBox

            Dim selectPen As New Pen(Me.BackColor)

一個自定義的ListBox

            e.Graphics.DrawRectangle(selectPen, e.Bounds)

一個自定義的ListBox

        End If

一個自定義的ListBox

        ' e.DrawBackground()

一個自定義的ListBox

        e.DrawFocusRectangle()

一個自定義的ListBox
一個自定義的ListBox
一個自定義的ListBox

        Dim myPen As New Pen(Me.LineColor)

一個自定義的ListBox

        ' Dim myPen As New Pen(Color.Red)

一個自定義的ListBox

        Select Case e.Index

一個自定義的ListBox

            Case 0

一個自定義的ListBox

                'none

一個自定義的ListBox

            Case 1

一個自定義的ListBox

                'solid

一個自定義的ListBox
一個自定義的ListBox

                myPen.DashStyle = Drawing2D.DashStyle.Solid

一個自定義的ListBox

            Case 2

一個自定義的ListBox

                'dash

一個自定義的ListBox
一個自定義的ListBox

                myPen.DashStyle = Drawing2D.DashStyle.Dash

一個自定義的ListBox

            Case 3

一個自定義的ListBox

                'dot

一個自定義的ListBox
一個自定義的ListBox

                myPen.DashStyle = Drawing2D.DashStyle.Dot

一個自定義的ListBox

            Case 4

一個自定義的ListBox

                'dashdot

一個自定義的ListBox
一個自定義的ListBox

                myPen.DashStyle = Drawing2D.DashStyle.DashDot

一個自定義的ListBox

            Case 5

一個自定義的ListBox

                'dashdotdot

一個自定義的ListBox

                myPen.DashStyle = Drawing2D.DashStyle.DashDotDot

一個自定義的ListBox

            Case 6

一個自定義的ListBox

                'solid

一個自定義的ListBox
一個自定義的ListBox

                myPen.Width = 2

一個自定義的ListBox

                myPen.DashStyle = Drawing2D.DashStyle.Solid

一個自定義的ListBox

            Case 7

一個自定義的ListBox

                'dash

一個自定義的ListBox
一個自定義的ListBox

                myPen.Width = 2

一個自定義的ListBox

                myPen.DashStyle = Drawing2D.DashStyle.Dash

一個自定義的ListBox

            Case 8

一個自定義的ListBox

                'dot

一個自定義的ListBox
一個自定義的ListBox

                myPen.Width = 2

一個自定義的ListBox

                myPen.DashStyle = Drawing2D.DashStyle.Dot

一個自定義的ListBox

            Case 9

一個自定義的ListBox

                'dashdot

一個自定義的ListBox
一個自定義的ListBox

                myPen.Width = 2

一個自定義的ListBox

                myPen.DashStyle = Drawing2D.DashStyle.DashDot

一個自定義的ListBox
一個自定義的ListBox

            Case 10

一個自定義的ListBox

                'dashdotdot

一個自定義的ListBox

                myPen.Width = 2

一個自定義的ListBox

                myPen.DashStyle = Drawing2D.DashStyle.DashDotDot

一個自定義的ListBox
一個自定義的ListBox

            Case 11

一個自定義的ListBox

                'solid

一個自定義的ListBox
一個自定義的ListBox

                myPen.Width = 3

一個自定義的ListBox

                myPen.DashStyle = Drawing2D.DashStyle.Solid

一個自定義的ListBox
一個自定義的ListBox

                'Case 12

一個自定義的ListBox

                '    'dash

一個自定義的ListBox
一個自定義的ListBox

                '    myPen.Width = 3

一個自定義的ListBox

                '    myPen.DashStyle = Drawing2D.DashStyle.Dash

一個自定義的ListBox
一個自定義的ListBox

                'Case 13

一個自定義的ListBox

                '    'dot

一個自定義的ListBox
一個自定義的ListBox

                '    myPen.Width = 3

一個自定義的ListBox

                '    myPen.DashStyle = Drawing2D.DashStyle.Dot

一個自定義的ListBox
一個自定義的ListBox

                'Case 14

一個自定義的ListBox

                '    'dashdot

一個自定義的ListBox
一個自定義的ListBox

                '    myPen.Width = 3

一個自定義的ListBox

                '    myPen.DashStyle = Drawing2D.DashStyle.DashDot

一個自定義的ListBox
一個自定義的ListBox

                'Case 15

一個自定義的ListBox

                '    'dashdotdot

一個自定義的ListBox

                '    myPen.Width = 3

一個自定義的ListBox

                '    myPen.DashStyle = Drawing2D.DashStyle.DashDotDot

一個自定義的ListBox
一個自定義的ListBox

        End Select

一個自定義的ListBox
一個自定義的ListBox

        'e.Graphics.DrawRectangle(myPen, New Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))

一個自定義的ListBox

        If e.Index = 0 Then

一個自定義的ListBox

            Dim myBrush As New SolidBrush(Color.Black)

一個自定義的ListBox

            e.Graphics.DrawString(Me.Items(e.Index), e.Font, myBrush, New RectangleF(e.Bounds.X, e.Bounds.Y + _alternate, e.Bounds.Width, e.Bounds.Height))

一個自定義的ListBox

        Else

一個自定義的ListBox

            e.Graphics.DrawLine(myPen, e.Bounds.X + _alternate, e.Bounds.Y + CInt(e.Bounds.Height / 2), e.Bounds.X + e.Bounds.Width - _alternate, e.Bounds.Y + CInt(e.Bounds.Height / 2))

一個自定義的ListBox

        End If

一個自定義的ListBox
一個自定義的ListBox

    End Sub

一個自定義的ListBox
一個自定義的ListBox

    'set current selectedindex

一個自定義的ListBox
一個自定義的ListBox

    Private Sub ListStyle_SelectedIndexChanged()Sub ListStyle_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.SelectedIndexChanged

一個自定義的ListBox
一個自定義的ListBox

        Dim currentStyle As Style

一個自定義的ListBox
一個自定義的ListBox

        Select Case Me.SelectedIndex

一個自定義的ListBox

            Case 0

一個自定義的ListBox

                currentStyle.LineType = Drawing2D.DashStyle.Custom      'represent for none preset

一個自定義的ListBox

                currentStyle.LineWidth = 1

一個自定義的ListBox
一個自定義的ListBox

            Case 1

一個自定義的ListBox

                currentStyle.LineType = Drawing2D.DashStyle.Solid

一個自定義的ListBox

                currentStyle.LineWidth = 1

一個自定義的ListBox
一個自定義的ListBox

            Case 2

一個自定義的ListBox

                currentStyle.LineType = Drawing2D.DashStyle.Dash

一個自定義的ListBox

                currentStyle.LineWidth = 1

一個自定義的ListBox
一個自定義的ListBox

            Case 3

一個自定義的ListBox

                currentStyle.LineType = Drawing2D.DashStyle.Dot

一個自定義的ListBox

                currentStyle.LineWidth = 1

一個自定義的ListBox

            Case 4

一個自定義的ListBox

                currentStyle.LineType = Drawing2D.DashStyle.DashDot

一個自定義的ListBox

                currentStyle.LineWidth = 1

一個自定義的ListBox
一個自定義的ListBox

            Case 5

一個自定義的ListBox

                currentStyle.LineType = Drawing2D.DashStyle.DashDotDot

一個自定義的ListBox

                currentStyle.LineWidth = 1

一個自定義的ListBox
一個自定義的ListBox

            Case 6

一個自定義的ListBox

                currentStyle.LineType = Drawing2D.DashStyle.Solid

一個自定義的ListBox

                currentStyle.LineWidth = 2

一個自定義的ListBox
一個自定義的ListBox

            Case 7

一個自定義的ListBox

                currentStyle.LineType = Drawing2D.DashStyle.Dash

一個自定義的ListBox

                currentStyle.LineWidth = 2

一個自定義的ListBox
一個自定義的ListBox

            Case 8

一個自定義的ListBox

                currentStyle.LineType = Drawing2D.DashStyle.Dot

一個自定義的ListBox

                currentStyle.LineWidth = 2

一個自定義的ListBox
一個自定義的ListBox

            Case 9

一個自定義的ListBox

                currentStyle.LineType = Drawing2D.DashStyle.DashDot

一個自定義的ListBox

                currentStyle.LineWidth = 2

一個自定義的ListBox
一個自定義的ListBox
一個自定義的ListBox

            Case 10

一個自定義的ListBox

                currentStyle.LineType = Drawing2D.DashStyle.DashDotDot

一個自定義的ListBox

                currentStyle.LineWidth = 2

一個自定義的ListBox
一個自定義的ListBox

            Case 11

一個自定義的ListBox

                currentStyle.LineType = Drawing2D.DashStyle.Solid

一個自定義的ListBox

                currentStyle.LineWidth = 3

一個自定義的ListBox
一個自定義的ListBox

            Case 12

一個自定義的ListBox

                currentStyle.LineType = Drawing2D.DashStyle.Dash

一個自定義的ListBox

                currentStyle.LineWidth = 3

一個自定義的ListBox
一個自定義的ListBox

            Case 13

一個自定義的ListBox

                currentStyle.LineType = Drawing2D.DashStyle.Dot

一個自定義的ListBox

                currentStyle.LineWidth = 3

一個自定義的ListBox
一個自定義的ListBox

            Case 14

一個自定義的ListBox

                currentStyle.LineType = Drawing2D.DashStyle.DashDot

一個自定義的ListBox

                currentStyle.LineWidth = 3

一個自定義的ListBox
一個自定義的ListBox

            Case 15

一個自定義的ListBox

                currentStyle.LineType = Drawing2D.DashStyle.DashDotDot

一個自定義的ListBox

                currentStyle.LineWidth = 3

一個自定義的ListBox
一個自定義的ListBox

        End Select

一個自定義的ListBox

        'set current style

一個自定義的ListBox

        Me.LineStyle = currentStyle

一個自定義的ListBox
一個自定義的ListBox

        'Debug.WriteLine(Me.SelectedIndex)

一個自定義的ListBox

        'Debug.WriteLine(Me.LineStyle.LineType)

一個自定義的ListBox

        'Debug.WriteLine(Me.LineStyle.LineWidth)

一個自定義的ListBox
一個自定義的ListBox
一個自定義的ListBox

    End Sub

一個自定義的ListBox
一個自定義的ListBox
一個自定義的ListBox

    Public Sub DrawColorStyle()Sub DrawColorStyle(ByVal mycolor As System.Drawing.Color, ByVal e As DrawItemEventArgs)

一個自定義的ListBox
一個自定義的ListBox

    End Sub

一個自定義的ListBox
一個自定義的ListBox
一個自定義的ListBox

#End Region

一個自定義的ListBox
一個自定義的ListBox
一個自定義的ListBox

End Class

 snapshoot:

一個自定義的ListBox

繼續閱讀