How to resize the row height in WinForms GridControl?
Resizing the row height
The size of
the rows and columns can be resized by using the ResizeToFit method.
//Specifies needed to resize the columns or cells or rows.
this.gridControl1.RowHeights.ResizeToFit(GridRangeInfo.Col(this.gridControl1.CurrentCell.ColIndex));
gridControl1.Refresh();'Specifies needed to resize the columns or cells or rows.
Me.gridControl1.RowHeights.ResizeToFit(GridRangeInfo.Col(Me.gridControl1.CurrentCell.ColIndex))
gridControl1.Refresh()When you want to change the row height dynamically by using MeasureString instead of ResizeToFit, use the simple workaround as follows.
Solution
In the QueryRowHeight event, you can use the Graphics.Use the MeasureString method to set the row height dynamically. It returns the size of the given string that is used to find whether the row height needs to be changed or not.
//Declares the Graphics object.
Graphics graphics;
//Hooks the event in Form_Load to resize the row height based on the content.
this.gridControl1.QueryRowHeight += gridControl1_QueryRowHeight;
void gridControl1_QueryRowHeight(object sender, GridRowColSizeEventArgs e)
{
using (Graphics graphics = CreateGraphics())
{
if (e.Index > 0)
{
bool DataExist = false;
for (int i = 1; i < this.gridControl1.ColCount; i++)
{
if (this.gridControl1[e.Index, i].Text != string.Empty)
{
DataExist = true;
//Measures the width and height of the given string.
stringSize = graphics.MeasureString(gridControl1[e.Index, i].Text, gridControl1[e.Index, i].Font.GdipFont, gridControl1.Model.ColWidths[i]).ToSize();
//Sets the row height
if (maxRowHeight < stringSize.Height)
{
maxRowHeight = stringSize.Height;
}
}
}
if (DataExist)
{
//Resizes the row height
e.Size = maxRowHeight + 3;
maxRowHeight = 0;
e.Handled = true;
}
}
}
}'Declares the Graphics object.
Dim graphics As Graphics
'Hooks the event in Form_Load to resize the row height based on the content.
AddHandler Me.gridControl1.QueryRowHeight, AddressOf gridControl1_QueryRowHeight
Private Sub gridControl1_QueryRowHeight(ByVal sender As Object, ByVal e As GridRowColSizeEventArgs)
Using graphics As Graphics = CreateGraphics()
If e.Index > 2 Then
Dim DataExist As Boolean = False
For i As Integer = 1 To Me.gridControl1.ColCount - 1
If Me.gridControl1(e.Index, i).Text <> String.Empty Then
DataExist = True
'Measures the width and height of the given string.
stringSize = graphics.MeasureString(gridControl1(e.Index, i).Text, gridControl1(e.Index, i).Font.GdipFont, gridControl1.Model.ColWidths(i)).ToSize()
'Sets the row height
If maxRowHeight < stringSize.Height Then
maxRowHeight = stringSize.Height
End If
End If
Next i
If DataExist Then
'Resizes the row height
e.Size = maxRowHeight + 3
maxRowHeight = 0
e.Handled = True
End If
End If
End Using
End SubThe following
image illustrates the resizing of the rows.

Samples: