Hallo,
dein Feld dt wird von dir im Hauptprogramm definiert und ist entsprechend nur dort bekannt. Wenn du es in deinen Forms verwenden willst, dann musst du es auch dort bekannt machen.
Wie es aussieht, wird dein Form2 ja aus dem Form1 aufgerufen. Somit kannst du dein DT auch im Form1 anlegen und das Hauptprogramm aus dem Spiel lassen.
dies kannst du z.B. mit einem public property machen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| public partial class Form1 : Form { {...}
public DataTable dt { get; protected set; } = new DataTable("Person"); } |
das könntest du dann im Constructor deines Form2 verwenden:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| public partial class Form2 : Form { {...} public Form2(Form1 aufrufer) { fh = aufrufer; DGVSP.DataSource = fh.dt; InitializeComponent(); } {...} } |
So könntest du den von dir gewünschten Effekt erreichen. Ob es eine gute Idee ist, aus beiden Forms auf das gleiche Objekt zuzugreifen wage ich zu bezweifeln, aber beurteilen könnte ich dass nur wenn ich dein Projekt besser kennen würde. Da muss aber jeder seine eigenen Erfahrungen machen.
Gruß
PS: Ich würde übrigens auch auf diese zwei Buchstaben Bezeichner verzichten. Heute weist du noch, was fh.dt bedeutet, in drei Monaten aber nicht mehr ein "ParrentForm.PersonData" oder ähnliches wäre da bestimmt verständlicher
.