have you ever wanted to know how the datagrid knows that a datatable has columns and how it propogates them to the grid.

you shoulld take a look at ITypedList and IBindingList, also take a look at a good sample HERE