Autor Beitrag
lilalaunebaer
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 20.05.06 13:33 
Hallo allerseits,

ich möchte eine kleine Verwaltungesoftware für eine kleines Orchester schreiben.
Da die Anzahl der Personen übersichtlich ist, und ich noch nicht so die Ahnung von Datenbankanbindung in C# habe, möchte ich gerne ein typisiertes DataSet verwenden; dies kann man ja schön im Designer basteln. Zum Speichern der Daten nehme ich WriteXML und ReadXML, das reicht mir im Moment.
Da ich aber die Anwendung als MDI designen möchte, habe ich für z.B. Personendaten und Instrumente eigene MDI-Child-Formulare.
Wie bekomme ich es einfach hin, auf ein und demselben DataSet, das irgendwoe in meiner MDI-Main-Form herumexisitiert, mit allen MDIChilds zu arbeiten?
Ich möchte beim Start das DataSet einmal Füllen, und dann z.B. in der Form Instrumente in einem DataGridView die Tabelle Instrumente anzeigen, oder in der Personenübersicht nur die Tabelle "Stammdaten" bearbeiten.
Aber die jeweilige BindingSource soll als DataSouce das TypedDataSet aus der Main-Form verwenden (oder wo auch immer es sein soll, hauptsache ein "Zentrales"); ich will halt nicht in jeder Form ein TypedDataSet, eine BindingSource und alle Methoden zum Laden per ReamXML einzeln implementieren, da kann man ja nicht von sauberer Programmierung sprechen.

Ich selber steige grade als alter VCL'er von Delphi 6 auf Visual Studio und C# um, OOP ist mir bekannt, nur die Tricks und Paradigmen in C# kommen langsam...

Gibt es da Ansätze? Was ich schon gemacht habe, war einen Konstruktor der Form zu überladen und als Parameter das TypedDataSet aus der Main-Form zu übergeben.
Ähnlicher Code:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
public Instrumente(dsTypedDataSet db) {
  InitializeComponent();
  this.dsBindingSource.DataSource = db;
  // und weiteres..
}

oder die Variante, das DataSet in der Main-Form als internal zu deklarieren, und dann
den geplanten Parent zu übergeben:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
public Instrumente(Form Parent) {
  InitializeComponent();
  this.dsBindingSource.DataSource = (Parent as frmMain).db;
  this.MdiParent = Parent;
  // und weiteres..
}

Hat VS auch beides schön kompiliert, aber sobald ich (in beiden Fällen) die Methode aufgerufen habe, kam eine NullReference-Exception mit dem Hinweis "Object Reference not set to an instance of an Object". Leider kann ich damit noch nicht viel anfangen, denn das DataSet liegt ja in der frmMain instantiiert vor, und ich übergebe die referenz mit
ausblenden C#-Quelltext
1:
this.ins = new Instrumente(this); //usw..					


Ich wäre euch dankbar, wenn mir jemand den Fehler erklären könnte, und darüber hinaus für jeden konzeptionellen Vorschlag!!

Danke,
Daniel