Articles in this section
Category / Section

How to auto extend a column to fill the available space in the WinForms GridGroupingControl?

Handle QueryColWidth event


To dynamically change the column widths, you have to handle the Grid's QueryColWidth event. The following example shows how you can have the right-most or the left-most column grow to fill the Grid's client area as the Grid size changes.

//Defines the columns to fill the space in the table.
void TableModel_QueryColWidth(object sender, GridRowColSizeEventArgs e)
{
   switch (_colSizeBehavior)
   {
       case colSizeBehavior.RightColumn:
               if(e.Index == this.gridGroupingControl1.TableDescriptor.VisibleColumns.Count)
               {
                  e.Size = this.gridGroupingControl1.ClientSize.Width - this.gridGroupingControl1.TableModel.ColWidths.GetTotal(0,
                  this.gridGroupingControl1.TableDescriptor.VisibleColumns.Count - 1);
                  e.Handled = true;
               }
               break;
       case colSizeBehavior.LeftColumn:
               if(e.Index == this.gridGroupingControl1.TableModel.Cols.FrozenCount + 1)
               {
                  int leftPiece = this.gridGroupingControl1.TableModel.ColWidths.GetTotal(0, this.gridGroupingControl1.TableModel.Cols.FrozenCount);
                  int rightPiece = this.gridGroupingControl1.TableModel.ColWidths.GetTotal(this.gridGroupingControl1.TableModel.Cols.FrozenCount + 2, this.gridGroupingControl1.TableModel.ColCount);
                  e.Size = this.gridGroupingControl1.ClientSize.Width - leftPiece - rightPiece;
                  e.Handled = true;
               }
               break;
       default:
               break;
    }
}
'Defines the columns to fill the space in the table.
Private Sub TableModel_QueryColWidth(ByVal sender As Object, ByVal e As GridRowColSizeEventArgs)
   Select Case _colSizeBehavior
       Case colSizeBehavior.RightColumn
                If e.Index = Me.gridGroupingControl1.TableDescriptor.VisibleColumns.Count Then
                   e.Size = Me.gridGroupingControl1.ClientSize.Width - Me.gridGroupingControl1.TableModel.ColWidths.GetTotal(0, Me.gridGroupingControl1.TableDescriptor.VisibleColumns.Count - 1)
                   e.Handled = True
                End If
       Case colSizeBehavior.LeftColumn
                If e.Index = Me.gridGroupingControl1.TableModel.Cols.FrozenCount + 1 Then
                   Dim leftPiece As Integer = Me.gridGroupingControl1.TableModel.ColWidths.GetTotal(0, Me.gridGroupingControl1.TableModel.Cols.FrozenCount)
                   Dim rightPiece As Integer = Me.gridGroupingControl1.TableModel.ColWidths.GetTotal(Me.gridGroupingControl1.TableModel.Cols.FrozenCount + 2, Me.gridGroupingControl1.TableModel.ColCount)
                   e.Size = Me.gridGroupingControl1.ClientSize.Width - leftPiece - rightPiece
                   e.Handled = True
                End If
       Case Else
   End Select
End Sub

After applying the properties, the Grid looks like the following screenshot.

Left column to fill the available space in Grid

    Figure 1: The left column to fill the available space


Samples:

C#: Auto extending column

VB: Auto extending column

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Access denied
Access denied