Scanner Geschrieben 15. September 2010 Teilen Geschrieben 15. September 2010 Hallo! Habe ein kleines Problem mit den Windows Forms. Nämlich bräuchte ich einen Befehl mit dem ich innerhalb einer Form zu einer anderen wechseln kann, wobei die zweite Form dann aber zur Übergeordneten werden soll. D.h. ich will nicht innerhalb einer Form eine andere aufrufen und nach Beenden der aufgerufenen Form wieder zur ersten zurück, sondern die zweite Form soll alleine überbleiben. Gibt es da eine Möglichkeit, oder müsste ich hierzu erst Form 1 schließen, ins Hauptprogramm und von dort aus dann Form 2 aufmachen? Wär ne Alternative, jedoch habe ich sehr viele solche Übergänge zwischen veschiedenen Formen und ein direkter Wechsel würde die Sache übersichtlicher machen. Hoffe es weiß jemand Rat. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
2K1.INC Geschrieben 16. September 2010 Teilen Geschrieben 16. September 2010 Hi, du willst ja z.B. von der Startform (Form1) auf eine Folgeform die soll jedoch die Mainform werden... ich denk mal da wirst du so kein Erfolg haben, da in der Program.cs Application.Run(new Form1()); drin steht sobald Form1 geschlossen wird, sind alle Forms vom Projekt. Hier würde sich anbieten eine Mainform zu erstellen in der du alle andren Forms rein lädst. Die kannst du dann so oft reinladen und schließn wie du lustig bist da die Mainform nicht geschlossen wird.. oder du erstellst dir anstatt Forms Steuerelemente die kannst du dann genau so nutztn. Die Frage ob Mainform oder Steuerelemte hängt davon ab ob der User ein bestimmten Ablauf hat bei der Benutzung dann Steuerelemente ansonsten Mainform... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lbm1305 Geschrieben 16. September 2010 Teilen Geschrieben 16. September 2010 innerhalb einer Form zu einer anderen wechseln kann, wobei die zweite Form dann aber zur Übergeordneten werden soll. D.h. ich will nicht innerhalb einer Form eine andere aufrufen und nach Beenden der aufgerufenen Form wieder zur ersten zurück, sondern die zweite Form soll alleine überbleiben. Nur Interesse halber: Für was soll das gut sein? Welchen Sinn soll dieses Szenario haben? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lbm1305 Geschrieben 16. September 2010 Teilen Geschrieben 16. September 2010 Du könntest zwei WinForm Projekte erstellen. Über die Solutioneigenschaften kannst Du dann angeben, welchee Projekte gestartet werden sollen. Auch Mehrfachauswahl ist möglich. Für die Kommunikation beider Forms untereinander bietet sich das Mediator-Pattern an. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Scanner Geschrieben 17. September 2010 Autor Teilen Geschrieben 17. September 2010 Ich hatte da an so ne Art "Zustandsmaschine" gedacht, falls das jemand kennt (bin eher aus der Hardwareprogrammierung). Ich glaub ich werds dann doch so machen, dass ich einfach beim Wechseln zu einer anderen Form die alte Form schließe und dabei nen Parameter ins Hauptprogramm übergebe, welche und ob eine neue Form geladen werden soll und gut ists. Danke jedenfalls für den Hinweis. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Mcolli Geschrieben 21. September 2010 Teilen Geschrieben 21. September 2010 So auf die Schnelle: Die Klasse Programm muss so aussehen: static class Program { private delegate void ShowForm(Form frm); private delegate void CloseForm(Form frm); private static event ShowForm ON_SHOWFORM; private static event CloseForm ON_CLOSEFORM; private static List<Form> APP_FORMS = new List<Form>(); private static void ShowFormHandler(Form frm) { frm.Show(); APP_FORMS.Add(frm); } private static void CloseFormHandler(Form frm) { APP_FORMS.Remove(frm); if (APP_FORMS.Count == 0) { Application.Exit(); } } public static void REQUEST_CLOSEFORM(Form frm) { ON_CLOSEFORM(frm); } public static void REQUEST_SHOWFORM(Form frm) { ON_SHOWFORM(frm); } /// <summary> /// Der Haupteinstiegspunkt für die Anwendung. /// </summary> [STAThread] static void Main() { ON_SHOWFORM += new ShowForm(ShowFormHandler); ON_CLOSEFORM += new CloseForm(CloseFormHandler); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); ON_SHOWFORM(new Form1()); Application.Run(); } } Und ein Fenster muss das "FormClosing" Event so umsetzen: private void Form1_FormClosing(object sender, FormClosingEventArgs e) { Program.REQUEST_CLOSEFORM(this); } Und ein Aufruf von nem neuen Fenster muss so aussehen private void but_open_Click(object sender, EventArgs e) { Program.REQUEST_SHOWFORM(new Form2()); } Dadurch dass man Events called wird der Programmfluss nicht behindert. Durch "Application.Run()" ohne Parameter läuft das Programme solange bis "Application.Exit()" aufgerufen wird. Die Liste mit den Fenster dient nur dazu festzustellen wann das Programm beendet werden kann. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.