How to: Freeze Columns in the Windows Forms DataGridView Control

When users view data displayed in a Windows Forms DataGridView control, they sometimes need to refer to a single column or set of columns frequently. For example, when displaying a table of customer information that contains many columns, it is useful to display the customer name at all times while enabling other columns to scroll outside the visible region.

To achieve this behavior, you can freeze columns in the control. When you freeze a column, all the columns to its left (or to its right in right-to-left language scripts) are frozen as well. Frozen columns remain in place while all other columns can scroll.


If column reordering is enabled, the frozen columns are treated as a group distinct from the unfrozen columns. Users can reposition columns in either group, but they cannot move a column from one group to the other.

The Frozen property of a column determines whether the column is always visible within the grid.

There is support for this task in Visual Studio. Also see How to: Freeze Columns in the Windows Forms DataGridView Control Using the Designer.

To freeze a column programmatically

  • Set the DataGridViewColumn.Frozen property to true.

    this.dataGridView1.Columns["AddToCartButton"].Frozen = true;
    Me.dataGridView1.Columns("AddToCartButton").Frozen = True

Compiling the Code

This example requires:

See Also

Basic Column, Row, and Cell Features in the Windows Forms DataGridView Control
How to: Enable Column Reordering in the Windows Forms DataGridView Control