2011-01-15 13 views
1

Ich habe eine Form, welche Instanzen ein neues Formular, das ich bereits mit erstellt habenVisual C# Fenster behaver

statuswindow statwin = new statuswindow(); 
statwin.ShowDialog(); 
return statwin; 

Dieser Code ist in einer Funktion. Das Problem ist, wenn ich die Funktion in anderen Code die nächste Zeile des Codes nicht ausgeführt wird, bis das neu instanzierte Fenster vom Benutzer geschlossen wird, ich vermute, das ist der Nebeneffekt der Verwendung von ShowDialog(), gibt es einen Weg zu Soll das gleiche Verhalten verwendet werden (wobei das oberste Hauptfenster nicht das andere Hauptfenster sein soll), während der Code des Hauptformulars noch laufen darf?

Aktualisierung: Obwohl Show(); funktioniert, ich muss in der Lage sein, das Fenster wie einen Dialog zu machen, indem ich es immer über dem anderen Fenster habe und es immer das aktiv ausgewählte Fenster ist.

Antwort

3

Die ShowDialog-Methode zum Anzeigen eines Fensters zeigt dies als einen Dialog, bei dem es sich um einen Blockierungsmechanismus innerhalb von C#/.net handelt. Wenn Sie das Fenster einfach anzeigen und den laufenden Code nicht blockieren möchten, bis er geschlossen wird, können Sie die window.Show() - Funktion verwenden.

In Ihrem Code:

startwin.Show(); 

Dies wird die startwin Form führen den Benutzer sichtbar zu werden, und wird die startwin.VisibleChanged Veranstaltung sowie die startwin.Load Ereignis ausgelöst Feuer.

+0

Nicht ganz die Antwort, die ich suchte, aber nützlich. Weißt du, wie man das Fenster immer wie ein Dialog über das andere Fenster legt? Gibt es auch eine Möglichkeit, das neue Fenster in einem separaten Thread auszuführen? –

+1

Sieh dir die Dokumentation für thread @ http://msdn.microsoft.com/en-us/library/system.threading.thread.aspx an, die dir helfen soll, mit Threads zu beginnen (mach einfach einen neuen Thread, der das Fenster anzeigt) . Sie können das Fenster mithilfe der Form.BringToFront-Methode oben halten. Eventuell müssen Sie einige Ereignisse überladen, um diese Methode bei Bedarf aufzurufen. – Warbum

1

Um das neue Fenster immer oben zu platzieren, können Sie in den Formulareigenschaften das Flag Oberster Fenster festlegen. Um das Fenster in einem separaten Thread auszuführen, spawnen Sie zunächst den Thread und erstellen dann das Fenster aus diesem Thread. Es gibt auch "Application Modal" und "System Modal" Win32 Window Flags, aber ich weiß nicht, ob diese WinForms ausgesetzt sind oder nicht - schauen Sie sich die Formulareigenschaften an!