windowsforms-devexpress-dot-xtrabars-dot-popupmenu-93259c52.md
Enables you to paint the content of the bar displayed to the left of the popup menu.
Namespace : DevExpress.XtraBars
Assembly : DevExpress.XtraBars.v25.2.dll
NuGet Package : DevExpress.Win.Navigation
[DXCategory("Events")]
public event BarCustomDrawEventHandler PaintMenuBar
<DXCategory("Events")>
Public Event PaintMenuBar As BarCustomDrawEventHandler
The PaintMenuBar event's data class is BarCustomDrawEventArgs. The following properties provide information specific to this event:
| Property | Description |
|---|---|
| Bounds | Gets the bounding rectangle of the painted element. |
| Graphics | Gets the drawing surface of the element being painted. |
| Handled | Gets or sets a value specifying whether default painting must be performed. |
You can display a custom bar to the left of the popup menu. The following must be performed in order to display the bar:
Note : if the PaintMenuBar event is not handled, nothing is painted on the menu bar.
The following sample code handles the PopupMenu.PaintMenuBar event. The handler fills the menu bar area with a linear gradient brush and paints “XtraBars Suite” on it.
The image below displays an example of using such a PopupMenu.PaintMenuBar event handler. (Note that the PopupMenu.MenuBarWidth property of the corresponding popup menu should be set to 20 to obtain similar output).
using System.Drawing;
using System.Drawing.Drawing2D;
readonly Font textFont = new Font("Tahoma", 11, FontStyle.Bold);
private void popupMenu1_PaintMenuBar(object sender,
DevExpress.XtraBars.BarCustomDrawEventArgs e) {
// filling the background
using(var backBrush = new LinearGradientBrush(e.Bounds, Color.Black,
Color.Blue, LinearGradientMode.Vertical))
e.Graphics.FillRectangle(backBrush, e.Bounds);
// formatting the output string
using(var outStringFormat = new StringFormat()) {
outStringFormat.Alignment = StringAlignment.Near;
outStringFormat.LineAlignment = StringAlignment.Center;
outStringFormat.FormatFlags |= StringFormatFlags.DirectionVertical;
// transforming the painting surface and modifying the bounding rectangle
// this is needed to provide proper string orientation
e.Graphics.RotateTransform(180);
Rectangle rect = e.Bounds;
rect.Offset(-rect.Width, -rect.Height);
// painting the string
e.Graphics.DrawString("XtraBars Suite", textFont,
Brushes.White, rect, outStringFormat);
e.Graphics.ResetTransform();
}
// prohibiting default painting
e.Handled = true;
}
Imports System.Drawing
Imports System.Drawing.Drawing2D
Private ReadOnly textFont As New Font("Tahoma", 11, FontStyle.Bold)
Private Sub PopupMenu1_PaintMenuBar(ByVal sender As Object, _
ByVal e As DevExpress.XtraBars.BarCustomDrawEventArgs) Handles PopupMenu1.PaintMenuBar
' filling the background
Using backBrush = New LinearGradientBrush(e.Bounds, Color.Black, Color.Blue, LinearGradientMode.Vertical)
e.Graphics.FillRectangle(backBrush, e.Bounds)
End Using
' formatting the output string
Using outStringFormat = New StringFormat()
outStringFormat.Alignment = StringAlignment.Near
outStringFormat.LineAlignment = StringAlignment.Center
outStringFormat.FormatFlags = outStringFormat.FormatFlags Or StringFormatFlags.DirectionVertical
' transforming the painting surface and modifying the bounding rectangle
' this is needed to provide proper string orientation
e.Graphics.RotateTransform(180)
Dim rect As Rectangle = e.Bounds
rect.Offset(-rect.Width, -rect.Height)
' painting the string
e.Graphics.DrawString("XtraBars Suite", textFont, Brushes.White, rect, outStringFormat)
e.Graphics.ResetTransform()
End Using
' prohibiting default painting
e.Handled = True
End Sub
See Also