Title: Automatically resize ListView columns to fit their data in C#
It's actually pretty easy to automatically resize ListView columns to fit their data. If you set a ListView column's width to -1, it automatically resizes to fit the data it contains. If you set the width to -2, it resizes to fit its data and its column header.
This example displays buttons that let you set the ListView's column widths to 100 pixels, -1, or -2. The program uses the following SetListViewColumnSizes method to set all of the column widths at once.
// Set the listView's column sizes to the same value.
private void SetListViewColumnSizes(ListView lvw, int width)
foreach (ColumnHeader col in lvw.Columns)
col.Width = width;
This code simply loops through the ListView control's columns and sets their values to whatever value was passed into the method.
Download the example to experiment with it and to see additional details.