windowsforms-devexpress-dot-xtraverticalgrid-dot-vgridcontrol-a4d3f041.md
Allows you to paint record headers.
Namespace : DevExpress.XtraVerticalGrid
Assembly : DevExpress.XtraVerticalGrid.v25.2.dll
NuGet Packages : DevExpress.Win.Navigation, DevExpress.Win.VerticalGrid
[DXCategory("Appearance")]
public event CustomDrawRecordHeaderEventHandler CustomDrawRecordHeader
<DXCategory("Appearance")>
Public Event CustomDrawRecordHeader As CustomDrawRecordHeaderEventHandler
The CustomDrawRecordHeader event's data class is DevExpress.XtraVerticalGrid.Events.CustomDrawRecordHeaderEventArgs.
Enable the VGridOptionsView.ShowRecordHeaders property to display record headers.
You can specify record header content as follows:
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:
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);
}
//...
}
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