Практическое руководство. Использование класса отрисовки элемента управления
В этом примере показано, как можно использовать класс ComboBoxRenderer для отрисовки стрелки раскрывающегося списка у элемента управления полем со списком. В примере приводится метод OnPaintдля простого пользовательского элемента управления. Свойство ComboBoxRenderer.IsSupported используется для определения того, включены ли визуальные стили в клиентской области окон приложений. Если визуальные стили включены, то метод ComboBoxRenderer.DrawDropDownButton отрисовывает стрелку раскрывающегося списка с визуальными стилями; в противном случае метод ControlPaint.DrawComboButton отрисовывает стрелку раскрывающегося списка в классическом стиле Windows.
Пример
// 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
Компиляция кода
Для этого примера требуются:
Пользовательский элемент управления, производный от класса Control.
Form, в котором размещается пользовательский элемент управления.
Ссылки на пространства имен System, System.Drawing, System.Windows.Forms и System.Windows.Forms.VisualStyles.
См. также
.NET Desktop feedback
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по