ComboBoxRenderer.DrawDropDownButton Method (Graphics, Rectangle, ComboBoxState)

 

Draws a drop-down arrow with the current visual style of the operating system.

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

public static void DrawDropDownButton(
	Graphics g,
	Rectangle bounds,
	ComboBoxState state
)

Parameters

g
Type: System.Drawing.Graphics

The Graphics used to draw the drop-down arrow.

bounds
Type: System.Drawing.Rectangle

The Rectangle that specifies the bounds of the drop-down arrow.

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

One of the ComboBoxState values that specifies the visual state of the drop-down 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 calling this method, you should verify that the IsSupported property returns true.

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

// Draw the combo box in the current state.
protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);

    if (!ComboBoxRenderer.IsSupported)
    {
        this.Parent.Text = "Visual Styles Disabled";
        return;
    }

    this.Parent.Text = "CustomComboBox Enabled";

    // Always draw the main text box and drop down arrow in their 
    // current states
    ComboBoxRenderer.DrawTextBox(e.Graphics, topTextBoxRectangle,
        this.Text, this.Font, textBoxState);
    ComboBoxRenderer.DrawDropDownButton(e.Graphics, arrowRectangle,
        arrowState);

    // Only draw the bottom text box if the arrow has been clicked
    if (isActivated)
    {
        ComboBoxRenderer.DrawTextBox(e.Graphics,
            bottomTextBoxRectangle, bottomText, this.Font,
            textBoxState);
    }
}

protected override void OnMouseDown(MouseEventArgs e)
{
    base.OnMouseDown(e);

    // Check whether the user clicked the arrow.
    if (arrowRectangle.Contains(e.Location) &&
        ComboBoxRenderer.IsSupported)
    {
        // Draw the arrow in the pressed state.
        arrowState = ComboBoxState.Pressed;

        // The user has activated the combo box.
        if (!isActivated)
        {
            this.Text = "Clicked!";
            textBoxState = ComboBoxState.Pressed;
            isActivated = true;
        }

        // The user has deactivated the combo box.
        else
        {
            this.Text = "Click here";
            textBoxState = ComboBoxState.Normal;
            isActivated = false;
        }

        // Redraw the control.
        Invalidate();
    }
}

.NET Framework
Available since 2.0
Return to top
Show: