Comment : utiliser une classe de rendu des contrôles
Cet exemple montre comment utiliser la ComboBoxRenderer classe pour afficher la flèche déroulante d’un contrôle de zone de liste déroulante. L’exemple se compose de la OnPaint méthode d’un contrôle personnalisé simple. La ComboBoxRenderer.IsSupported propriété est utilisée pour déterminer si les styles visuels sont activés dans la zone cliente des fenêtres d’application. Si les styles visuels sont actifs, la ComboBoxRenderer.DrawDropDownButton méthode affiche la flèche déroulante avec des styles visuels ; sinon, la ControlPaint.DrawComboButton méthode affiche la flèche déroulante dans le style Windows classique.
Exemple
// Render the drop-down arrow with or without visual styles.
protected:
virtual void OnPaint(PaintEventArgs^ e) override
{
__super::OnPaint(e);
if (!ComboBoxRenderer::IsSupported)
{
ControlPaint::DrawComboButton(e->Graphics,
this->ClientRectangle, ButtonState::Normal);
}
else
{
ComboBoxRenderer::DrawDropDownButton(e->Graphics,
this->ClientRectangle, ComboBoxState::Normal);
}
}
// Render the drop-down arrow with or without visual styles.
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (!ComboBoxRenderer.IsSupported)
{
ControlPaint.DrawComboButton(e.Graphics,
this.ClientRectangle, ButtonState.Normal);
}
else
{
ComboBoxRenderer.DrawDropDownButton(e.Graphics,
this.ClientRectangle, ComboBoxState.Normal);
}
}
' Render the drop-down arrow with or without visual styles.
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
MyBase.OnPaint(e)
If Not ComboBoxRenderer.IsSupported Then
ControlPaint.DrawComboButton(e.Graphics, _
Me.ClientRectangle, ButtonState.Normal)
Else
ComboBoxRenderer.DrawDropDownButton(e.Graphics, _
Me.ClientRectangle, ComboBoxState.Normal)
End If
End Sub
Compilation du code
Cet exemple nécessite :
Contrôle personnalisé dérivé de la Control classe.
Qui Form héberge le contrôle personnalisé.
Références aux espaces de noms , et System.Windows.FormsSystem.Windows.Forms.VisualStyles aux Systemespaces System.Drawingde noms.
Voir aussi
.NET Desktop feedback