Entwickler-Ecke
WinForms - Form2.Show() funktioniert nicht
C# - Do 06.10.11 22:59
Titel: Form2.Show() funktioniert nicht
Hallo,
da sich wenn man bei C# die Startform schließt, das Programm schließt, kann ich meine Form1 nicht schließen, was ich aber tun sollte.
Jetzt habe ich eine Neue Form erstellt (FormsControl). Diese ist permanent im unsichtbar und dient nur zur Kontrolle der anderen Formen.
wenn ich jetzt von dort aus die 1. Form starte, also:
C#-Quelltext
1: 2:
| LogIn loginForm = new LogIn(); loginForm.Show(); |
sieht dass bei mir so aus (siehe Anhang). Und mehr geht nicht.
Woran kann das liegen?
Ach ja, meine FormsControl Form springt danach in eine Endlosschleife.
daeve - Fr 07.10.11 00:17
Bin nicht sicher was du meinst aber wenn dein Problem ist das keine Komponenten sichtbar sind, musst du die Methode Initialize() aufrufen.
Und wiso eine unsichtbare Form zur Kontrolle ??
Th69 - Fr 07.10.11 11:03
Hallo C#,
du hast anscheinend deine GUI blockiert (daher wird keine Message mehr intern abgearbeitet).
Wenn du einen Login-Dialog vor deiner eigentlichen Hauptform anzeigen lassen willst, dann benutze dafür ShowDialog (diese verwendet eine eigene Message-Schleife).
Am besten du rufst diesen Login-Dialog dann in der Main-Methode auf:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| static void Main() { LogIn loginDlg = new LogIn(); if (loginDlg.ShowDialog() == DialogResult.OK) { Application.Run(new MainForm()); } } |
Evtl. noch um Passwort-Abfrage (o.ä.) ergänzen und in einer Schleife abarbeiten (oder aber alles im Login-Dialog abfragen).
Ralf Jansen - Fr 07.10.11 11:28
| Zitat: |
| Jetzt habe ich eine Neue Form erstellt (FormsControl). Diese ist permanent im unsichtbar und dient nur zur Kontrolle der anderen Formen. |
Du musst Application.Run nicht zwingend mit einer Form aufrufen. In deinem Fall erscheint es sinnvoller dafür eine
ApplicationContext [
http://msdn.microsoft.com/de-de/library/ms157901.aspx] Klasse zu benutzen anstatt einer unsichtbaren Form.
C# - Fr 07.10.11 17:02
Vielen Dank für die Antworten. Habs jetzt mit einer Kombination aus beidem geschafft:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| class _Forms : ApplicationContext { public static string CurrentUser { get; set; } public _Forms() { LogIn loginForm = new LogIn(); MainForm mainForm = new MainForm();
while (true) { DialogResult res = loginForm.ShowDialog(); if (res != DialogResult.OK) break; mainForm.user = CurrentUser; res = mainForm.ShowDialog(); if (res == DialogResult.Retry) continue; if (res == DialogResult.Cancel) break; } Application.Exit(); }
} |
Funktioniert prima.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!