ComboBoxRenderer.DrawDropDownButton Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Dessine une flèche de déroulement avec le style visuel actuel du système d'exploitation.
public:
static void DrawDropDownButton(System::Drawing::Graphics ^ g, System::Drawing::Rectangle bounds, System::Windows::Forms::VisualStyles::ComboBoxState state);
public static void DrawDropDownButton (System.Drawing.Graphics g, System.Drawing.Rectangle bounds, System.Windows.Forms.VisualStyles.ComboBoxState state);
static member DrawDropDownButton : System.Drawing.Graphics * System.Drawing.Rectangle * System.Windows.Forms.VisualStyles.ComboBoxState -> unit
Public Shared Sub DrawDropDownButton (g As Graphics, bounds As Rectangle, state As ComboBoxState)
Paramètres
- state
- ComboBoxState
Une des valeurs ComboBoxState qui spécifie l'état visuel de la flèche de déroulement.
Exceptions
Le système d'exploitation ne prend pas en charge les styles visuels.
- ou -
Les styles visuels sont désactivés par l'utilisateur dans le système d'exploitation.
- ou -
Les styles visuels ne sont pas appliqués à la zone client des fenêtres d'application.
Exemples
L’exemple de code suivant utilise la méthode dans la DrawDropDownButton méthode d’un OnPaint contrôle personnalisé pour dessiner une flèche déroulante dans l’état déterminé par l’emplacement du pointeur de la souris. Cet exemple de code fait partie d’un exemple plus grand fourni pour la ComboBoxRenderer classe.
// 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();
}
}
// 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();
}
}
' Draw the combo box in the current state.
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
MyBase.OnPaint(e)
If Not ComboBoxRenderer.IsSupported Then
Me.Parent.Text = "Visual Styles Disabled"
Return
End If
Me.Parent.Text = "CustomComboBox Enabled"
' Always draw the main text box and drop down arrow in their
' current states.
ComboBoxRenderer.DrawTextBox(e.Graphics, topTextBoxRectangle, _
Me.Text, Me.Font, textBoxState)
ComboBoxRenderer.DrawDropDownButton(e.Graphics, arrowRectangle, _
arrowState)
' Only draw the bottom text box if the arrow has been clicked.
If isActivated Then
ComboBoxRenderer.DrawTextBox(e.Graphics, _
bottomTextBoxRectangle, bottomText, Me.Font, textBoxState)
End If
End Sub
Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
MyBase.OnMouseDown(e)
' Check whether the user clicked the arrow.
If arrowRectangle.Contains(e.Location) And _
ComboBoxRenderer.IsSupported Then
' Draw the arrow in the pressed state.
arrowState = ComboBoxState.Pressed
' The user has activated the combo box.
If Not isActivated Then
Me.Text = "Clicked!"
textBoxState = ComboBoxState.Pressed
isActivated = True
' The user has deactivated the combo box.
Else
Me.Text = "Click here"
textBoxState = ComboBoxState.Normal
isActivated = False
End If
' Redraw the control.
Invalidate()
End If
End Sub
Remarques
Avant d’appeler cette méthode, vous devez vérifier que la IsSupported propriété retourne true
.