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:
DataGridView
instantiated object protected
(suggested in a previous post which referred to this site)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).
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; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With