Back to Devexpress

How to: Custom Paint the Group's Client Foreground

windowsforms-4907-controls-and-libraries-navigation-controls-navigation-bar-examples-appearance-how-to-custom-paint-the-groups-client-foreground.md

latest3.5 KB
Original Source

How to: Custom Paint the Group's Client Foreground

  • Aug 01, 2019
  • 2 minutes to read

The following sample code handles the NavBarControl.CustomDrawGroupClientForeground event to custom paint the text on a group’s client foreground. The group doesn’t contain any links initially and thus the NavBarGroup.CalcGroupClientHeight event is handled to specify the group’s height.

The image below shows the result.

csharp
using DevExpress.XtraNavBar.ViewInfo;
using DevExpress.XtraNavBar;

readonly Font mailFont = new Font("Verdana", 8, FontStyle.Bold);
readonly Font siteFont = new Font("Verdana", 8);
private void navBarControl1_CustomDrawGroupClientForeground(object sender, 
  CustomDrawObjectEventArgs e) {
    // Identifying the processed group.
    NavGroupClientInfoArgs info = e.ObjectInfo as NavGroupClientInfoArgs;
    if(info.Group.Caption != "Support Info") return;

    // Specifying the text rectangle.    
    Rectangle rect = e.RealBounds;
    rect.Height /= 4;

    // Formatting the output string.
    using(var outStringFormat = new StringFormat()) {
        outStringFormat.Alignment = StringAlignment.Near;
        outStringFormat.LineAlignment = StringAlignment.Center;

        // Painting the first string.
        rect.Offset(0, rect.Height);
        e.Cache.DrawString("E-mail:", mailFont,
            Brushes.Black, rect, outStringFormat);

        // Painting the second string.
        rect.Offset(0, rect.Height);
        e.Cache.DrawString("[email protected]", siteFont,
            Brushes.Black, rect, outStringFormat);
    }

    // Prohibiting default painting.
    e.Handled = true;
}

private void navBarGroup2_CalcGroupClientHeight(object sender, 
  NavBarCalcGroupClientHeightEventArgs e) {
   e.Height = 70;        
}
vb
Imports DevExpress.XtraNavBar.ViewInfo
Imports DevExpress.XtraNavBar

Private ReadOnly mailFont As New Font("Verdana", 8, FontStyle.Bold)
Private ReadOnly siteFont As New Font("Verdana", 8)
Private Sub NavBarControl1_CustomDrawGroupClientForeground(ByVal sender As Object, _
  ByVal e As CustomDrawObjectEventArgs) _
  Handles NavBarControl1.CustomDrawGroupClientForeground
    ' Identifying the processed group.
    Dim info As NavGroupClientInfoArgs = TryCast(e.ObjectInfo, NavGroupClientInfoArgs)
    If info.Group.Caption <> "Support Info" Then
        Return
    End If

    ' Specifying the text rectangle.    
    Dim rect As Rectangle = e.RealBounds
    rect.Height \= 4

    ' Formatting the output string.
    Using outStringFormat = New StringFormat()
        outStringFormat.Alignment = StringAlignment.Near
        outStringFormat.LineAlignment = StringAlignment.Center

        ' Painting the first string.
        rect.Offset(0, rect.Height)
        e.Cache.DrawString("E-mail:", mailFont, Brushes.Black, rect, outStringFormat)

        ' Painting the second string.
        rect.Offset(0, rect.Height)
        e.Cache.DrawString("[email protected]", siteFont, Brushes.Black, rect, outStringFormat)
    End Using

    ' Prohibiting default painting.
    e.Handled = True
End Sub

Private Sub NavBarGroup2_CalcGroupClientHeight(ByVal sender As System.Object, _
  ByVal e As NavBarCalcGroupClientHeightEventArgs) Handles NavBarGroup6.CalcGroupClientHeight
   e.Height = 70
End Sub