Live Chat Icon For mobile
Live Chat Icon

How can I autosize a column in my datagrid

Platform: WinForms| Category: Datagrid

One way to do this is to use MeasureString to compute the size of the text in each cell, and then take the maximum value. Below is a code snippet that does this. It assumes your datagrid is bound to a datatable. You can download a full working sample. (C#,VB).

public void AutoSizeCol(int col)
  float width = 0;
  int numRows = ((DataTable) dataGrid1.DataSource).Rows.Count;
  Graphics g = Graphics.FromHwnd(dataGrid1.Handle);
  StringFormat sf = new StringFormat(StringFormat.GenericTypographic);
  SizeF size;

  for(int i = 0; i < numRows; ++ i)
    size = g.MeasureString(dataGrid1[i, col].ToString(), dataGrid1.Font, 500, sf);
    if(size.Width > width)
      width = size.Width;


  dataGrid1.TableStyles[''customers''].GridColumnStyles[col].Width = (int) width + 8; // 8 is for leading and trailing padding

Share with

Share on twitter
Share on facebook
Share on linkedin

Related FAQs

Couldn't find the FAQs you're looking for?

Please submit your question and answer.