Entwickler-Ecke
WinForms - Formular in Formular öffnen
Azzidodabass - Di 28.10.08 21:49
Titel: Formular in Formular öffnen
Hallo an alle,
habe folgendes Problem:
Möchte in einem Formular ein weiteres Formular öffnen, wenn man auf den button neues Projekt klickt
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| private void neuesProjektToolStripMenuItem_Click(object sender, EventArgs e) {
Form2 f=new Form2(); f.Show();
} |
allerdings möchte ich nicht, dass sich das fenster wieder und wieder öffnet, wenn man erneut auf "neues Projekt" klickt.
Das Formular Form1 soll immer das Hauptformular sein, Form2 darf nicht hinter Form1 rutschen
Hoffe Ich hab mich verständlich ausgedrückt
Danke im Voraus
Moderiert von
Christian S.: C#-Tags hinzugefügtModeriert von
Christian S.: Topic aus C# - Die Sprache verschoben am Di 28.10.2008 um 20:51
JüTho - Mi 29.10.08 10:14
Hallo,
in diesem Fall darf das Hauptformular das neue Formular kennen, siehe meinen anderslautenden Hinweis in
Formular abfragen [
http://www.c-sharp-forum.de/viewtopic.php?p=530812#530812].
Also geht es auf diesem Weg:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| Form2 secondForm = null;
private void neuesProjektToolStripMenuItem_Click(object sender, EventArgs e) { if (secondForm == null) { secondForm = new Forms(); secondForm.SetClosedEvent(secondFormClosed); } secondForm.Show(); } |
Achtung: Wenn Du das zweite Formular mit Close() vom Hauptformular aus schließt, musst Du secondForm = null setzen; sonst knallt es beim nächsten Aufruf eines neuen Projekts. Wenn Du das zweite Formular aus sich heraus schließt, muss das Hauptformular das erfahren; also musst Du ein Ereignis einrichten:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| private void secondFormClosed(object sender, FormClosedEventArgs e) { secondForm = null; }
public void SetClosedEvent(FormClosedEventHandler event) { this.FormClosed += event; } |
Für Einzelheiten bitte ich in der
SDK-Doku/MSDN nachzulesen. Jürgen
PS. Bitte bemühe Dich um sprechende Bezeichner - nicht Form1, Form2 usw.
Azzidodabass - Mi 29.10.08 16:30
Grüß dich,
klappt soweit alles gut, möchte in dem unterformular berechnungen durchführen, das fenster soll nur über das hauptformular geschlossen werden können.
Werde die controlbox von dem unterformular entfernen.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| private void neuToolStripMenuItem_Click(object sender, EventArgs e) { if (f == null) { f = new Form2(); f.MdiParent = this; f.Show(); } }
private void beendenToolStripMenuItem_Click(object sender, EventArgs e) { f = null; Form2.Close(); } |
leider kann ich mit dem beenden button das fenster noch nich schliessen, bekomme folgende fehlermeldung
Für das nicht statische Feld, die Methode oder die Eigenschaft "System.Windows.Forms.Form.Close()" ist ein Objektverweis erforderlich. C:\Users\Administration\AppData\Local\Temporary Projects\WindowsFormsApplication1
Danke für deine Unterstützung
Moderiert von
Christian S.: C#-Tags hinzugefügt
JüTho - Mi 29.10.08 16:56
Zitat: |
Für das nicht statische Feld, die Methode oder die Eigenschaft "System.Windows.Forms.Form.Close()" ist ein Objektverweis erforderlich. C:\Users\Administration\AppData\Local\Temporary Projects\WindowsFormsApplication1 |
Es soll doch
ein bestimmtes Formular geschlossen werden, nicht eine Klasse. Also musst Du dieses bestimmte Formular direkt verwenden; außerdem muss die Reihenfolge beachtet werden:
C#-Quelltext
1: 2: 3: 4: 5:
| private void beendenToolStripMenuItem_Click(object sender, EventArgs e) { f.Close(); f = null; } |
Gruß Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!