Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you 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)
like image 800
Brendan Avatar asked Feb 09 '09 21:02

Brendan


2 Answers

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).

like image 166
Marc Gravell Avatar answered Oct 05 '22 11:10

Marc Gravell


I've seen this behavior before for ComboBox's with the Items property and it's really frustrating. Here's how I've gotten around it with ComboBox. You should be able to apply this to the DataGridView.

I created a "new" property called Items and set it to not be browsable and to be explicitly be hidden from serialization. Under the hood it just accesses the real Items property.

[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new ObjectCollection Items
{
    get { return ((ComboBox)this).Items; }
}

[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new object DataSource
{
    get { return ((ComboBox)this).DataSource; }
like image 45
JaredPar Avatar answered Oct 05 '22 13:10

JaredPar