ScrollBarRenderer.DrawArrowButton Method (Graphics, Rectangle, ScrollBarArrowButtonState)

 

Draws a scroll arrow with visual styles.

Namespace:   System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

public static void DrawArrowButton(
	Graphics g,
	Rectangle bounds,
	ScrollBarArrowButtonState state
)

Parameters

g
Type: System.Drawing.Graphics

The Graphics used to draw the scroll arrow.

bounds
Type: System.Drawing.Rectangle

The Rectangle that specifies the bounds of the scroll arrow.

state
Type: System.Windows.Forms.VisualStyles.ScrollBarArrowButtonState

One of the ScrollBarArrowButtonState values that specifies the visual state of the scroll arrow.

Exception Condition
InvalidOperationException

The operating system does not support visual styles.

-or-

Visual styles are disabled by the user in the operating system.

-or-

Visual styles are not applied to the client area of application windows.

Before using this method, you should verify that the IsSupported property returns true.

The following code example uses the DrawArrowButton method in a custom control's OnPaint method to draw a scroll arrow in the state determined by the location of the mouse pointer. This code example is part of a larger example provided for the ScrollBarRenderer class.

// Draw the scroll bar in its normal state.
protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);

    // Visual styles are not enabled.
    if (!ScrollBarRenderer.IsSupported)
    {
        this.Parent.Text = "CustomScrollBar Disabled";
        return;
    }

    this.Parent.Text = "CustomScrollBar Enabled";

    // Draw the scroll bar track.
    ScrollBarRenderer.DrawRightHorizontalTrack(e.Graphics,
        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)
    {
        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.
    else if (rightBarClicked)
    {
        clickedBarRectangle.X =
            thumbRectangle.X + thumbRectangle.Width;
        clickedBarRectangle.Width =
            thumbRightLimitRight - clickedBarRectangle.X;
        ScrollBarRenderer.DrawRightHorizontalTrack(e.Graphics,
            clickedBarRectangle, ScrollBarState.Pressed);
    }
}

.NET Framework
Available since 2.0
Return to top
Show: