C# – How to prevent the Visual Studio designer auto-generating columns in a DataGridView


I generate all my columns in a subclassed DataGridView programmatically. However Visual Studio 2008 keeps reading my constructor class (which populates a DataTable with empty content and binds it to the DataGridView) and generates code for the columns in the InitializeComponent method – in the process setting AutoGenerateColumns to false.

This causes errors in design-time compilation which are only solved by manually going into the design code and deleting all references to these autogenerated columns.

How can I stop it doing this?

I have tried:

  • Making the control 'Frozen'
  • Setting the DataGridView instantiated object protected (suggested in a previous post which referred to this site)

Best Solution

It sounds like you are adding controls in the constructor. Perhaps add the columns slightly later - perhaps something like overriding OnParentChanged; you'll then be able to check DesignMode so you only add the columns during execution (not during design).