Gewusst wie: Verwenden einer Steuerelementwiedergabeklasse
In diesem Beispiel wird veranschaulicht, wie die ComboBoxRenderer-Klasse verwendet wird, um den Dropdownpfeil eines Kombinationsfeldsteuerelements zu rendern. Das Beispiel umfasst die OnPaint-Methode eines einfachen benutzerdefinierten Steuerelements. Die ComboBoxRenderer.IsSupported-Eigenschaft wird verwendet, um zu bestimmen, ob visuelle Stile im Clientbereich von Anwendungsfenstern aktiviert sind. Wenn visuelle Stile aktiviert sind, gibt die ComboBoxRenderer.DrawDropDownButton-Methode den Dropdownpfeil mit visuellen Stilen wieder. Andernfalls gibt die ControlPaint.DrawComboButton-Methode den Dropdownpfeil im klassischen Windows-Stil wieder.
Beispiel
' 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);
}
}
Kompilieren des Codes
Für dieses Beispiel ist Folgendes erforderlich:
Ein benutzerdefiniertes Steuerelement, das von der Control-Klasse abgeleitet ist.
Ein Form, das das benutzerdefinierte Steuerelement hostet.
Verweise auf die Namespaces System, System.Drawing, System.Windows.Forms und System.Windows.Forms.VisualStyles.