You could bind a DataGridView by setting its DataSource property. If you do this through the property grid at design time, the designer will generate the columns in the DataGridView for you. At runtime, bind the list. Note though that only public properties are considered in data binding scenarios.