Back to Devexpress

VGridControl.CustomDrawRecordHeader Event

windowsforms-devexpress-dot-xtraverticalgrid-dot-vgridcontrol-a4d3f041.md

latest4.7 KB
Original Source

VGridControl.CustomDrawRecordHeader Event

Allows you to paint record headers.

Namespace : DevExpress.XtraVerticalGrid

Assembly : DevExpress.XtraVerticalGrid.v25.2.dll

NuGet Packages : DevExpress.Win.Navigation, DevExpress.Win.VerticalGrid

Declaration

csharp
[DXCategory("Appearance")]
public event CustomDrawRecordHeaderEventHandler CustomDrawRecordHeader
vb
<DXCategory("Appearance")>
Public Event CustomDrawRecordHeader As CustomDrawRecordHeaderEventHandler

Event Data

The CustomDrawRecordHeader event's data class is DevExpress.XtraVerticalGrid.Events.CustomDrawRecordHeaderEventArgs.

Remarks

Enable the VGridOptionsView.ShowRecordHeaders property to display record headers.

You can specify record header content as follows:

Example

The following VGridControl.CustomDrawRecordHeader event handler paints the record header element using default settings, and then draws a rounded rectangle with text within the header.

See the following demo for the complete code:

Run Demo: PC Market

csharp
void OnCustomDrawRecordHeader(object sender, Events.CustomDrawRecordHeaderEventArgs e) {
    //skip code...
    // Draw the record header element using default settings.
    e.DefaultDraw();
    // Set the 'Handled' parameter to true to indicate that no default processing is required 
    // after the event handler is complete.
    e.Handled = true;
    //...
    int dataSourceRowIndex = vGrid.GetDataSourceRecordIndex(e.Record);
    bool addedToCart = Orders.Contains(dataSourceRowIndex);
    var color = addedToCart ? DXSkinColors.FillColors.Success : DXSkinColors.FillColors.Question;
    e.Cache.FillRoundedRectangle(color, linkRect, new CornerRadius(9));
    using (var format = new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center })
    using (var font = new Font(linkBlock.Font.FontFamily, linkBlock.Font.Size, FontStyle.Bold)) {
        var text = addedToCart ? linkBlock.Text : defaultCartLinkText;
        e.Cache.DrawString(text, font, Brushes.White, linkRect, format);
    }
    //...
}
vb
Private Sub OnCustomDrawRecordHeader(ByVal sender As Object, ByVal e As Events.CustomDrawRecordHeaderEventArgs)
    'skip code...
    ' Draw the record header element using default settings.
    e.DefaultDraw()
    ' Set the 'Handled' parameter to true to indicate that no default processing is required 
    ' after the event handler is complete.
    e.Handled = True
    '...
    Dim dataSourceRowIndex As Integer = vGrid.GetDataSourceRecordIndex(e.Record)
    Dim addedToCart As Boolean = Orders.Contains(dataSourceRowIndex)
    Dim color = If(addedToCart, DXSkinColors.FillColors.Success, DXSkinColors.FillColors.Question)
    e.Cache.FillRoundedRectangle(color, linkRect, New CornerRadius(9))
    Using format = New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}
        Using font = New Font(linkBlock.Font.FontFamily, linkBlock.Font.Size, FontStyle.Bold)
            Dim text = If(addedToCart, linkBlock.Text, defaultCartLinkText)
            e.Cache.DrawString(text, font, Brushes.White, linkRect, format)
        End Using
    End Using
    '...
End Sub

See Also

VGridControl Class

VGridControl Members

DevExpress.XtraVerticalGrid Namespace