Serialisierung von DataGridView.Columns verhindern

28/09/2009 - 20:44 von Armin Zingler | Report spam
Hi,

ich habe eine Klasse von DataGridView abgeleitet. Im Konstruktor füge ich Spalten hinzu. Platziere
ich das Control auf einer Form, wird Designer-Code generiert, der die Spalten hinzufügt. Dadurch
werden zur Laufzeit die Spalten sowohl durch den Designer-Code als auch durch den Code im
Konstruktor hinzugefügt. Sie sind also doppelt vorhanden, und das soll natürlich nicht sein.

Im Prinzip gibt es dafür das DefaultValue-Attribut, aber das funktioniert ja nicht für die
Columns-Eigenschaft. Wie kann ich den Designer dazu bringen, dass die Spalten nicht serialisiert
werden?

Versucht habe ich es durch "shadowing" der Columns-Eigenschaft:

<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> _
Shadows ReadOnly Property Columns() As DataGridViewColumnCollection
Get
Return MyBase.Columns
End Get
End Property

Funktioniert leider auch nicht. Die Spalten werden trotzdem serialisiert. Was hab ich übersehen?

Habe in der Hilfe auch das Thema "Übersicht über die Designerserialisierung" gelesen. Wie man merkt
erfolglos. ;)


Armin
 

Lesen sie die antworten

#1 Armin Zingler
01/10/2009 - 22:57 | Warnen spam
Armin Zingler schrieb:
Hi,

ich habe eine Klasse von DataGridView abgeleitet. Im Konstruktor füge ich Spalten hinzu. Platziere
ich das Control auf einer Form, wird Designer-Code generiert, der die Spalten hinzufügt. Dadurch
werden zur Laufzeit die Spalten sowohl durch den Designer-Code als auch durch den Code im
Konstruktor hinzugefügt. Sie sind also doppelt vorhanden, und das soll natürlich nicht sein.

Im Prinzip gibt es dafür das DefaultValue-Attribut, aber das funktioniert ja nicht für die
Columns-Eigenschaft. Wie kann ich den Designer dazu bringen, dass die Spalten nicht serialisiert
werden?

Versucht habe ich es durch "shadowing" der Columns-Eigenschaft:

<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> _
Shadows ReadOnly Property Columns() As DataGridViewColumnCollection
Get
Return MyBase.Columns
End Get
End Property

Funktioniert leider auch nicht. Die Spalten werden trotzdem serialisiert. Was hab ich übersehen?

Habe in der Hilfe auch das Thema "Übersicht über die Designerserialisierung" gelesen. Wie man merkt
erfolglos. ;)



Ideen? :-)

Armin

Ähnliche fragen