當前位置: 首頁>>代碼示例>>VB.NET>>正文


VB.NET ScrollBarRenderer類代碼示例

本文整理匯總了VB.NET中System.Windows.Forms.ScrollBarRenderer的典型用法代碼示例。如果您正苦於以下問題:VB.NET ScrollBarRenderer類的具體用法?VB.NET ScrollBarRenderer怎麽用?VB.NET ScrollBarRenderer使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了ScrollBarRenderer類的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的VB.NET代碼示例。

示例1: New

' 導入命名空間
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Windows.Forms.VisualStyles

Namespace ScrollBarRendererSample

    Class Form1
        Inherits Form

        Public Sub New()
            Me.Size = New Size(500, 500)

            Dim Bar1 As New CustomScrollBar()
            Bar1.Location = New Point(50, 100)
            Bar1.Size = New Size(200, 20)

            Controls.Add(Bar1)
        End Sub

        <STAThread()> _
        Shared Sub Main()
            ' The call to EnableVisualStyles below does not affect whether 
            ' ScrollBarRenderer.IsSupported is true; as long as visual styles 
            ' are enabled by the operating system, IsSupported is true.
            Application.EnableVisualStyles()
            Application.Run(New Form1())
        End Sub
    End Class

    Public Class CustomScrollBar
        Inherits Control

        Private clickedBarRectangle As Rectangle
        Private thumbRectangle As Rectangle
        Private leftArrowRectangle As Rectangle
        Private rightArrowRectangle As Rectangle
        Private leftArrowClicked As Boolean = False
        Private rightArrowClicked As Boolean = False
        Private leftBarClicked As Boolean = False
        Private rightBarClicked As Boolean = False
        Private thumbClicked As Boolean = False
        Private thumbState As ScrollBarState = ScrollBarState.Normal
        Private leftButtonState As ScrollBarArrowButtonState = _
            ScrollBarArrowButtonState.LeftNormal
        Private rightButtonState As ScrollBarArrowButtonState = _
            ScrollBarArrowButtonState.RightNormal

        ' This control does not allow these widths to be altered.
        Private thumbWidth As Integer = 15
        Private arrowWidth As Integer = 17

        ' Set the right limit of the thumb's right border.
        Private thumbRightLimitRight As Integer = 0

        ' Set the right limit of the thumb's left border.
        Private thumbRightLimitLeft As Integer = 0

        ' Set the left limit of thumb's left border.
        Private thumbLeftLimit As Integer = 0

        ' Set the distance from the left edge of the thumb to the 
        ' cursor tip.
        Private thumbPosition As Integer = 0

        ' Set the distance from the left edge of the scroll bar track to 
        ' the cursor tip.
        Private trackPosition As Integer = 0

        ' This timer draws the moving thumb while the scroll arrows or 
        ' track are pressed.
        Private WithEvents progressTimer As New Timer()

        Public Sub New()
            With Me
                .Location = New Point(10, 10)
                .Width = 200
                .Height = 20
                .DoubleBuffered = True
            End With
            SetUpScrollBar()
            progressTimer.Interval = 20
        End Sub

        ' Calculate the sizes of the scroll bar elements.
        Private Sub SetUpScrollBar()

            clickedBarRectangle = Me.ClientRectangle
            thumbRectangle = New Rectangle(ClientRectangle.X + _
                Me.ClientRectangle.Width / 2, Me.ClientRectangle.Y, _
                thumbWidth, Me.ClientRectangle.Height)
            leftArrowRectangle = New Rectangle(Me.ClientRectangle.X, _
                Me.ClientRectangle.Y, arrowWidth, Me.ClientRectangle.Height)
            rightArrowRectangle = New Rectangle(Me.ClientRectangle.Right - _
                arrowWidth, Me.ClientRectangle.Y, arrowWidth, _
                Me.ClientRectangle.Height)

            ' Set the default starting thumb position.
            thumbPosition = thumbWidth / 2

            ' Set the right limit of the thumb's right border.
            thumbRightLimitRight = Me.ClientRectangle.Right - arrowWidth

            ' Set the right limit of the thumb's left border.
            thumbRightLimitLeft = thumbRightLimitRight - thumbWidth

            ' Set the left limit of the thumb's left border.
            thumbLeftLimit = Me.ClientRectangle.X + arrowWidth
        End Sub

        ' Draw the scroll bar in its normal state.
        Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
            MyBase.OnPaint(e)

            ' Visual styles are not enabled.
            If Not ScrollBarRenderer.IsSupported Then
                Me.Parent.Text = "CustomScrollBar Disabled"
                Return
            End If

            Me.Parent.Text = "CustomScrollBar Enabled"

            ' Draw the scroll bar track.
            ScrollBarRenderer.DrawRightHorizontalTrack(e.Graphics, _
                Me.ClientRectangle, ScrollBarState.Normal)

            ' Draw the thumb and thumb grip in the current state.
            ScrollBarRenderer.DrawHorizontalThumb(e.Graphics, _
                thumbRectangle, thumbState)
            ScrollBarRenderer.DrawHorizontalThumbGrip(e.Graphics, _
                thumbRectangle, thumbState)

            ' Draw the scroll arrows in the current state.
            ScrollBarRenderer.DrawArrowButton(e.Graphics, _
                leftArrowRectangle, leftButtonState)
            ScrollBarRenderer.DrawArrowButton(e.Graphics, _
                rightArrowRectangle, rightButtonState)

            ' Draw a highlighted rectangle in the left side of the scroll 
            ' bar track if the user has clicked between the left arrow 
            ' and thumb.
            If leftBarClicked Then
                clickedBarRectangle.X = thumbLeftLimit
                clickedBarRectangle.Width = thumbRectangle.X - thumbLeftLimit
                ScrollBarRenderer.DrawLeftHorizontalTrack(e.Graphics, _
                    clickedBarRectangle, ScrollBarState.Pressed)

            ' Draw a highlighted rectangle in the right side of the scroll 
            ' bar track if the user has clicked between the right arrow 
            ' and thumb.
            ElseIf rightBarClicked Then
                clickedBarRectangle.X = thumbRectangle.X + _
                    thumbRectangle.Width
                clickedBarRectangle.Width = thumbRightLimitRight - _
                    clickedBarRectangle.X
                ScrollBarRenderer.DrawRightHorizontalTrack(e.Graphics, _
                    clickedBarRectangle, ScrollBarState.Pressed)
            End If
        End Sub

        ' Handle a mouse click in the scroll bar.
        Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
            MyBase.OnMouseDown(e)

            If Not ScrollBarRenderer.IsSupported Then
                Return
            End If

            ' When the thumb is clicked, update the distance from the left
            ' edge of the thumb to the cursor tip.
            If thumbRectangle.Contains(e.Location) Then
                thumbClicked = True
                thumbPosition = e.Location.X - thumbRectangle.X
                thumbState = ScrollBarState.Pressed

            ' When the left arrow is clicked, start the timer to scroll 
            ' while the arrow is held down.
            ElseIf leftArrowRectangle.Contains(e.Location) Then
                leftArrowClicked = True
                leftButtonState = ScrollBarArrowButtonState.LeftPressed
                progressTimer.Start()

            ' When the right arrow is clicked, start the timer to scroll 
            ' while arrow is held down.
            ElseIf rightArrowRectangle.Contains(e.Location) Then
                rightArrowClicked = True
                rightButtonState = ScrollBarArrowButtonState.RightPressed
                progressTimer.Start()

            ' When the scroll bar is clicked, start the timer to move the
            ' thumb while the mouse is held down.
            Else
                trackPosition = e.Location.X
                If e.Location.X < Me.thumbRectangle.X Then
                    leftBarClicked = True
                Else
                    rightBarClicked = True
                End If
                progressTimer.Start()
            End If

            Invalidate()
        End Sub

        ' Draw the track.
        Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs)
            MyBase.OnMouseUp(e)

            If Not ScrollBarRenderer.IsSupported Then
                Return
            End If

            ' Update the thumb position, if the new location is within 
            ' the bounds.
            If thumbClicked Then
                thumbClicked = False
                thumbState = ScrollBarState.Normal
                If e.Location.X > thumbLeftLimit + thumbPosition And _
                    e.Location.X < thumbRightLimitLeft + thumbPosition Then
                    thumbRectangle.X = e.Location.X - thumbPosition
                    thumbClicked = False
                End If

            ' If one of the four thumb movement areas was clicked, 
            ' stop the timer.
            ElseIf leftArrowClicked Then
                leftArrowClicked = False
                leftButtonState = ScrollBarArrowButtonState.LeftNormal
                progressTimer.Stop()

            ElseIf rightArrowClicked Then
                rightArrowClicked = False
                rightButtonState = ScrollBarArrowButtonState.RightNormal
                progressTimer.Stop()

            ElseIf leftBarClicked Then
                leftBarClicked = False
                progressTimer.Stop()

            ElseIf rightBarClicked Then
                rightBarClicked = False
                progressTimer.Stop()
            End If

            Invalidate()
        End Sub

        ' Track mouse movements if the user clicks on the scroll bar thumb.
        Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
            MyBase.OnMouseMove(e)

            If Not ScrollBarRenderer.IsSupported Then
                Return
            End If

            ' Update the thumb position, if the new location is 
            ' within the bounds.
            If thumbClicked Then

                ' The thumb is all the way to the left.
                If e.Location.X <= thumbLeftLimit + thumbPosition Then
                    thumbRectangle.X = thumbLeftLimit

                ' The thumb is all the way to the right.
                ElseIf e.Location.X >= thumbRightLimitLeft + thumbPosition Then
                    thumbRectangle.X = thumbRightLimitLeft

                ' The thumb is between the ends of the track.
                Else
                    thumbRectangle.X = e.Location.X - thumbPosition
                End If

                Invalidate()

            End If
        End Sub

        ' Recalculate the sizes of the scroll bar elements.
        Protected Overrides Sub OnSizeChanged(ByVal e As EventArgs)
            MyBase.OnSizeChanged(e)
            SetUpScrollBar()
        End Sub

        ' Handle the timer tick by updating the thumb position.
        Private Sub progressTimer_Tick(ByVal sender As Object, _
            ByVal myEventArgs As EventArgs) Handles progressTimer.Tick

            If Not ScrollBarRenderer.IsSupported Then
                Return
            End If

            ' If an arrow is clicked, move the thumb in small increments.
            If rightArrowClicked And thumbRectangle.X < thumbRightLimitLeft Then
                thumbRectangle.X += 1

            ElseIf leftArrowClicked And thumbRectangle.X > thumbLeftLimit Then
                    thumbRectangle.X -= 1

            ' If the track bar to right of the thumb is clicked, move the 
            ' thumb to the right in larger increments until the right edge 
            ' of the thumb hits the cursor.
            ElseIf rightBarClicked And thumbRectangle.X < thumbRightLimitLeft _
                And thumbRectangle.X + thumbRectangle.Width < trackPosition Then
                thumbRectangle.X += 3

            ' If the track bar to left of the thumb is clicked, move the 
            ' thumb to the left in larger increments until the left edge 
            ' of the thumb hits the cursor.
            ElseIf leftBarClicked And thumbRectangle.X > thumbLeftLimit And _
                thumbRectangle.X > trackPosition Then
                thumbRectangle.X -= 3
            End If

            Invalidate()
        End Sub

    End Class
End Namespace
開發者ID:VB.NET開發者,項目名稱:System.Windows.Forms,代碼行數:318,代碼來源:ScrollBarRenderer


注:本文中的System.Windows.Forms.ScrollBarRenderer類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。