2X faster development
The ultimate WinForms UI toolkit to boost your development speed.
Adjust the column widthTo 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. |
2X faster development
The ultimate WinForms UI toolkit to boost your development speed.
This page will automatically be redirected to the sign-in page in 10 seconds.