ComboBoxRenderer::DrawTextBox Method (Graphics^, Rectangle, String^, Font^, Rectangle, ComboBoxState)

 

Draws a text box in the specified state and bounds, with the specified text and text bounds.

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

public:
static void DrawTextBox(
	Graphics^ g,
	Rectangle bounds,
	String^ comboBoxText,
	Font^ font,
	Rectangle textBounds,
	ComboBoxState state
)

Parameters

g
Type: System.Drawing::Graphics^

The Graphics used to draw the text box.

bounds
Type: System.Drawing::Rectangle

The Rectangle that specifies the bounds of the text box.

comboBoxText
Type: System::String^

The String to draw in the text box.

font
Type: System.Drawing::Font^

The Font to apply to comboBoxText.

textBounds
Type: System.Drawing::Rectangle

The Rectangle that specifies the bounds in which to draw comboBoxText.

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

One of the ComboBoxState values that specifies the visual state of the text box.

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 DrawTextBox(Graphics^, Rectangle, String^, Font^, ComboBoxState) method in a custom control's OnPaint method to draw a text box. This code example is part of a larger example provided for the ComboBoxRenderer class.

      // Draw the combo box in the current state.
protected:
    virtual void OnPaint(PaintEventArgs^ e) override 
    {
        Control::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:
    virtual void OnMouseDown(MouseEventArgs^ e) override 
    {
        Control::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: