How to improve the performance when working with fonts inside the QueryCellInfo in WinForms GridControl?
Description
Our Winsform GridControl feature page specifies the font in the QueryCellInfo is fine in most cases since the font usually does not vary much for cells; however, in extreme cases when each cell gets its font changed in the QueryCellInfo, it is recommended to use the base styles.
Some definitions
The
GridBaseStyle represents base styles in the grid. A base style has a name, and
the GridStyleInfo object holds the style information. Cells in the grid can
reference a base style by using BaseStyle.
The GridBaseStylesMap holds a collection of base styles for a grid and lets you add, remove, and change base styles.
Solution
When the Font property is set in the QueryCellInfo event, the grid internally calls the GridFontInfo.GetGdipFont method that allocates a Font object and caches in the GridFontInfo class.
When base styles are defined, then the GDI font object is allocated only once per base style, and all other cells that use these styles do not have to allocate a GDI font object. Instead, they can use the GDI font that is allocated in the base style.
The following code example explains the way to initialize and use the base style.
//To add the New BaseStyleMap.
this.gridControl1.BaseStylesMap.CellTypes.Add("ItalicStyle");
this.gridControl1.BaseStylesMap.CellTypes.Add("BoldStyle");
this.gridControl1.BaseStylesMap.CellTypes.Add("StrikeOutStyle");
this.gridControl1.BaseStylesMa.p.CellTypes.Add("UnderlineStyle");
//Setting the Style Properties.
this.gridControl1.BaseStylesMap["ItalicStyle"].StyleInfo.Font.Italic = true;
this.gridControl1.BaseStylesMap["BoldStyle"].StyleInfo.Font.Bold = true;
this.gridControl1.BaseStylesMap["StrikeOutStyle"].StyleInfo.Font.Strikeout = true;
this.gridControl1.BaseStylesMap["UnderlineStyle"].StyleInfo.Font.Underline = true;
//Hook the event in Form_Load to apply the BaseStyle to the cells
this.gridControl1.QueryCellInfo += gridControl1_QueryCellInfo;
//Accessing the new base style property in QueryCellInfo event.
private void gridControl1_QueryCellInfo(object sender, Syncfusion.Windows.Forms.Grid.GridQueryCellInfoEventArgs e)
{
if (e.RowIndex > 0 && e.ColIndex > 0)
{
switch (e.ColIndex % 4)
{
case 0:
e.Style.BaseStyle = "BoldStyle";
break;
case 1:
e.Style.BaseStyle = "StrikeOutStyle";
break;
case 2:
e.Style.BaseStyle = "UnderlineStyle";
break;
case 3:
e.Style.BaseStyle = "ItalicStyle";
break;
}
}
}'To add the New BaseStyleMap.
Me.gridControl1.BaseStylesMap.CellTypes.Add("ItalicStyle")
Me.gridControl1.BaseStylesMap.CellTypes.Add("BoldStyle")
Me.gridControl1.BaseStylesMap.CellTypes.Add("StrikeOutStyle")
Me.gridControl1.BaseStylesMap.CellTypes.Add("UnderlineStyle")
'Setting the Style Properties.
Me.gridControl1.BaseStylesMap("ItalicStyle").StyleInfo.Font.Italic = True
Me.gridControl1.BaseStylesMap("BoldStyle").StyleInfo.Font.Bold = True
Me.gridControl1.BaseStylesMap("StrikeOutStyle").StyleInfo.Font.Strikeout = True
Me.gridControl1.BaseStylesMap("UnderlineStyle").StyleInfo.Font.Underline = True
'Hook the event in Form_Load to apply the BaseStyle to the cells
AddHandler Me.gridControl1.QueryCellInfo, AddressOf gridControl1_QueryCellInfo
'Accessing the new base style property in QueryCellInfo event.
Private Sub gridControl1_QueryCellInfo(ByVal sender As Object, ByVal e As Syncfusion.Windows.Forms.Grid.GridQueryCellInfoEventArgs)
If e.RowIndex > 0 AndAlso e.ColIndex > 0 Then
Select Case e.ColIndex Mod 4
Case 0
e.Style.BaseStyle = "BoldStyle"
Case 1
e.Style.BaseStyle = "StrikeOutStyle"
Case 2
e.Style.BaseStyle = "UnderlineStyle"
Case 3
e.Style.BaseStyle = "ItalicStyle"
End Select
End If
End SubThe screenshot below displays the GridControl with different font styles.

Figure 1: GridControl with different font styles
Sample Link:
C#: WorkingWithFont
VB: WorkingWithFont
Conclusion
I hope you enjoyed learning about how to improve the performance when working with fonts inside the QueryCellInfo in WinForms GridControl.
You can refer to our WinForms GridControl feature tour page to know about its other groundbreaking feature representations and WinForms GridControl documentation, and how to quickly get started for configuration specifications.
For current customers, you can check out our components from the License and Downloads page. If you are new to Syncfusion, you can try our 30-day free trial to check out our other controls.
If you have any queries or require clarifications, please let us know in the comments section below. You can also contact us through our support forums, Direct-Trac, or feedback portal. We are always happy to assist you!