title: How to prevent designer column replication when using extended DataGridView control that adds columns?
body: <p>I am creating a DataGridView inherited control that performs some stylizations and also adds a number of columns. The problem is that when this control is added to another form, the designer sees that the Columns property does not match its default value and so adds column generation to the designer in the new form.</p>
  
  <p>To illustrate the problem. Take the following control:</p>
  
  <pre><code>class CustomDataGridView : DataGridView
  {
      public CustomDataGridView()
      {
          Columns.Clear();
          Columns.Add("Column", "Header");
      }
  }
  </code></pre>
  
  <p>The Columns.Clear() is unnecessary - it's just there to illustrate that the problem is not the constructor. Anyhow, add the control it to a form. Cause the form UI to reload (by e.g. resizing the datagridview) and the designer ends up constantly adding a new column. I've tried a variety of ideas with no result. I attempted to hide the columns property from the designer, but unfortunately as it's not virtual that's also a no go.</p>
  
  <p>Any ideas? I feel like I must be missing something simple since this is presumably a fairly common usage pattern. I could just add the columns at runtime, but ideally I'd like to keep them visible/editable in the designer.</p>