)
We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. (Last updated on: June 24, 2019).
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

How can the grid auto adjust column widths so that the columns completely fill the grid's client area in WinForms GridControl or GridDataBoundGrid?

Platform: WinForms |
Control: GridDataBoundGrid(Classic) |
Published Date: April 21, 2015 |
Last Revised Date: February 10, 2020
Tags: columnsizing

Adjust the column width

To dynamically provide column widths, you must handle the grid's QueryColWidth event, Model.QueryColWidths in a GridDataBoundBound. For example, you can have the right-most or left-most column grow to fill the grid's client area as the grid size changes.

The attached sample allows you to use helper class, GridColSizeHelper, to manage this function. The helper class supports the proportional sizing of the columns as well as the left or right column fill the client area.

C#

private void grid_QueryColWidth(object sender, GridRowColSizeEventArgs e)
{
   switch(_colSizeBehavior)
   {
       case GridColSizeBehavior.FillRightColumn:
     if(e.Index == this.grid.Model.ColCount)
     {
        e.Size = this.grid.ClientSize.Width - this.grid.Model.ColWidths.GetTotal(0, this.grid.Model.ColCount - 1);
        e.Handled = true;
     }
     break;
       case GridColSizeBehavior.FillLeftColumn:
     if(e.Index == this.grid.Model.Cols.FrozenCount + 1)
     {
        int leftPiece = this.grid.Model.ColWidths.GetTotal(0, this.grid.Model.Cols.FrozenCount);
        int rightPiece = this.grid.Model.ColWidths.GetTotal(this.grid.Model.Cols.FrozenCount + 2, this.grid.Model.ColCount);
        e.Size = this.grid.ClientSize.Width - leftPiece - rightPiece;
        e.Handled = true;
     }
     break;
       case GridColSizeBehavior.EqualProportional:
     if(e.Index == this.grid.Model.ColCount)
     {
        e.Size = this.grid.ClientSize.Width - this.grid.Model.ColWidths.GetTotal(0, this.grid.Model.ColCount - 1);
     }
     else
     {
        e.Size = (int) (this.colRatios[e.Index] * this.grid.ClientSize.Width);
     }
     e.Handled = true;
     break;
       default:
     break;
    }
}

VB

Private Sub grid_QueryColWidth(ByVal sender As Object, ByVal e As GridRowColSizeEventArgs)
    Select Case _colSizeBehavior
        Case GridColSizeBehavior.FillRightColumn
       If e.Index = Me.grid.Model.ColCount Then
          e.Size = Me.grid.ClientSize.Width - Me.grid.Model.ColWidths.GetTotal(0, Me.grid.Model.ColCount - 1)
          e.Handled = True
       End If
        Case GridColSizeBehavior.FillLeftColumn
       If e.Index = Me.grid.Model.Cols.FrozenCount + 1 Then
          Dim leftPiece As Integer = Me.grid.Model.ColWidths.GetTotal(0, Me.grid.Model.Cols.FrozenCount)
          Dim rightPiece As Integer = Me.grid.Model.ColWidths.GetTotal(Me.grid.Model.Cols.FrozenCount + 2, Me.grid.Model.ColCount)
           e.Size = Me.grid.ClientSize.Width - leftPiece - rightPiece
          e.Handled = True
       End If
                 If e.Index = Me.grid.Model.ColCount Then
                    e.Size = Me.grid.ClientSize.Width - Me.grid.Model.ColWidths.GetTotal(0, Me.grid.Model.ColCount - 1)
                 Else
                    e.Size = CInt(Fix(Me.colRatios(e.Index) * Me.grid.ClientSize.Width))
                 End If
                 e.Handled = True
        Case Else
    End Select
End Sub

The following screenshot illustrates FillRightColumn behavior.

Show the adjust column width

Sample: http://www.syncfusion.com/downloads/support/directtrac/general/WF-15691_How_can_I_have_my_grid_auto_adjust_column_widths-1262860113.zip

2X faster development

The ultimate WinForms UI toolkit to boost your development speed.
ADD COMMENT
You must log in to leave a comment

Please sign in to access our KB

This page will automatically be redirected to the sign-in page in 10 seconds.

Up arrow icon

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon

Live Chat Icon For mobile
Live Chat Icon