Procedura: utilizzare una classe Control Rendering
Aggiornamento: novembre 2007
In questo esempio viene illustrato come utilizzare la classe ComboBoxRenderer per eseguire il rendering della freccia a discesa di un controllo casella combinata. L'esempio si basa sul metodo OnPaint di un semplice controllo personalizzato. La proprietà ComboBoxRenderer.IsSupported viene utilizzata per determinare se gli stili visivi vengono attivati nell'area client delle finestre dell'applicazione. Se gli stili visivi sono attivi, il metodo ComboBoxRenderer.DrawDropDownButton esegue il rendering della freccia a discesa con gli stili visivi. Altrimenti il metodo ControlPaint.DrawComboButton esegue il rendering della freccia a discesa nello stile Windows classico.
Esempio
' 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
// 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:
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);
}
}
Compilazione del codice
L'esempio presenta i seguenti requisiti:
Un controllo personalizzato derivato dalla classe Control.
Una classe Form che contiene il controllo personalizzato.
Riferimenti agli spazi dei nomi System, System.Drawing, System.Windows.Forms e System.Windows.Forms.VisualStyles.