Forum: ADO.NET |
Thema:
AW: AW: Ein DataSet in mehreren Fenstern (Forms) verwenden |
Von:
Frank Massel (
15.08.2006 13:23) |
Hallo Armin, danke für Deine Antwort und sorry, dass ich mich erst jetzt melde!
Natürlich kann mann z.B. im Mutterfenster (z.B. MDI-Form) genau eine Instanz des gewünschten Datasets erzeugen (sogar mit DragDrop in der Entwicklungsumgebung), dann per eigenen Quellcode diese Dataset-Instanz an die diversen Tochter-Fenster (z.B. in einem Konstruktor) übergeben und dort per Quellcode (und NICHT im Form-Designer!) verwenden.
Analoges gilt natürlich auch für BindingSource-Instanzen.
ABER: Mir ist es nur teilweise gelungen eine(!) globale Dataset-Instanz in der Entwicklungsumgebung im Form-Designer in mehreren Fensters zu verwenden: Per Hilfsklasse mit statischer(!) Membervariablen vom Typ des gewünschten DataSets und mit einer zugehörigen statischen Property-get-Methode. Nun in den Fenstern die z.B. DataGridView-Steuerelemente innerhalb der InitializeComponent()-Methode (in der Form.Designer.cs-Datei, nur so funktionierts überhaupt, auch wenn man da eigentlich nicht eingreifen soll...) an der passenden Stelle die .DataSource-Eigenschaft eines DataGridView mit HilfsKlasse.MeinDataSet und 'ner passenden DataSource belegen:
Wenn man dann das Fenster im Form-Designer anzeigen läßt, enthält das DataGridView-Steuerelement in der Entwicklungsumgebung alle Spalten, man kann sie via Eigenschaften-Fenster (F4) formatieren usw.
ABER: Nach Beendigung eines DEBUG-Lauf des Programms, Wechsel in die Designer-Ansicht des besagten Fensters sind die Spalten aus dem DataGridView verschwunden. Grund: In der o.a. InitializeComponent()-Methode fehlt nun wieder die Zeile "MeinDataGridView.DataSource = HilfsKlasse.MeinDataSet".
Und übrigens: Die via statischer Methode global zur Verfügung stehende eine(!) DataSet-Instanz kann nicht zur Belegung der DataSource-Eigenschaft eines DataGridView über das Eigenschaftenfenster verwendet werden. Also geht das so wie Du sagtest nicht (oder ich hab' da was vollkommen falsch verstanden).
Vielleicht kannst und möchstest Du mir dazu eine grundsätzliche Frage beantworten: Alle "Wie verwalte ich SQL-Daten mit einem C#-Windows-Forms-Programm"-Beispiele verwenden immer nur ein Fenster. In Praxis reicht das aber doch nie aus: Es werden mehrere Fenster verwendet. Und wie macht man das denn nun ? Auf jedem Fenster eine eigene DataSet-Instanz, oft mit sich wiederholenden Füllbefehlen etc ? Alles mehrfach ?
Ist doch Ressourcen- und Quellcodetippzeit-Verschwendung, oder ?
Vielleicht habe ich nur den verkehrten Denkansatz ?!
Viele Grüße aus Köln !
Frank Massel
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!