Ich versuche ein UserControl zu bauen, welches Daten gleichzeitig in einem DGV und einem MSChart Control darstellt.
Verschiedene Eigenschaften des DGV und des MSChart Controls möchte ich bearbeitbar lassen, zum Beispiel "DataSource", "Columns" vom Typ DataGridViewColumnCollection des DGV und "Series" vom Typ SeriesCollection des MSChart Controls.
Die DataSource Eigenschaft habe ich so deklariert:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| [AttributeProvider(typeof(IListSource))] [Browsable(true)] [Description("Datenquelle")] [DefaultValue(null)] public object DataSource { get { if (dgv.DataSource != null) return dgv.DataSource; return null; } set { dgv.DataSource = chart.DataSource = value; } } |
Die Series Eigenschaft des Chart Controls (selbes Problem auch bei der Columns Eigenschaft des DGV) wollte ich ähnlich deklarieren, allerdings ist die Eigenschaft am Chart Control schreibgeschützt, so dass ich den Setter nicht verwenden kann:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| [Browsable(true)] public SeriesCollection ChartSeries { get { return chart.Series; } } |
Auf einem Testformular ist es möglich, diese Eigenschaften im Designer zu öffnen und zu bearbeiten, und nach einem Klick auf OK sind die Änderungen auch übernommen. Wenn ich das Testprojekt starte, sind die Änderungen jedoch nicht zu sehen.
Ein Beispiel:
Ich setze bei einigen Spalten des DGV "Visible" auf false, diese sind dann auch im Designer nicht zu sehen. Starte ich das Projekt, sind diese wieder sichtbar.
Weiteres Beispiel:
Ich setze die Eigenschaften der "Series1", zum Beispiel XValueMember und YValueMember. Öffne ich die Eigenschaften wieder, sind die Änderungen noch drin. Starte ich aber das Projekt, ist beim Debuggen festzustellen dass die Änderungen nicht übernommen wurden.
Was ist zu tun?