2016-11-08 15 views
0

versteckt Ich versuche, eine Zweiform auf Windows-Anwendung in C# zu erstellen. Aus Gründen der Einfachheit und um mir zu helfen, es herauszufinden, bevor Sie es an anderer Stelle verwenden, habe ich im Wesentlichen eine Windows-Formularanwendung mit zwei Formen erstellt: Form1 und Form2, Form1 beim Start angezeigt. Auf Knopfdruck kann ich Form1 "verschwinden" lassen und Form2:Machen Sie das sichtbare Startformular wieder, nachdem es

private void button1_Click(object sender, EventArgs e) 
{ 
    Form2 x = new Form2(); 
    x.Show(); 
    this.Hide(); 
} 

Und das funktioniert super. Wenn ich jedoch zu Form1 zurückkehren möchte (indem ich es wieder sichtbar mache) und Form2 entlade, bin ich mir nicht sicher, wie ich mit der Kodierung von Form2 verfahren soll, um den Benutzer über einen Klick ebenfalls auf Form1 zurückzusetzen. Ich bin mir nicht sicher, worauf ich mich beziehen muss, um dieses Formular wieder sichtbar zu machen, anstatt ein neues Form1 zu erstellen und es zu laden, wodurch mein ursprüngliches Startformular im Speicher verbleibt.

Jede Hilfe Sie wäre genial bieten kann! Vielen Dank im Voraus,

-Jan

+2

die ursprüngliche Form Pass als eine Variable zum zweiten, Sie müssen es gespeichert haben, um es wieder aufrufen zu können - im 'Form2' -Konstruktor' Form2 (Form1 x) 'und speichern Sie es als Variable e, dann, wenn Sie es wieder öffnen möchten, können Sie es aus der 'Form2'-Variablen –

+0

Mögliche Duplikat von [Windows-Formulare in C# rotieren] (http://stackoverflow.com/questions/3666604/windows-forms-spinning- in-c-sharp) –

+0

x.FormClosing + = (s, cea) => {if (! cea.Cancel) this.Show(); }; Sehen Sie sich an, wie andere Programme das tun, sie tauschen selten Fenster aus. Bei Verwendung eines einzigen Hauptfensters, das den Inhalt vertauscht, handelt es sich um die normale Benutzeroberfläche. Sie würden dorthin gelangen, indem Sie UserControls anstelle von Forms erstellen. –

Antwort

-1

tun:

private void button1_Click(object sender, EventArgs e) 
    { 
     Form2 x = new Form2(); 
     this.Hide(); 
     x.ShowModal(); 
     this.Show(); 
    } 
+0

Danke Leute! Viele tolle Ideen hier. Sehr geschätzt! – jstdenis

1

Wie Alfie Kommentar schon sagt, müssen Sie Ihre Instanzen jeder Form irgendwie steuern.

würde ich eine statische Klasse mit zwei Variablen vor. Wenn Sie starten, verknüpfen Sie die Formulare mit diesen öffentlichen Eigenschaften in der statischen Klasse.

etwas wie folgt aus:

public static class App { 

    public static Form Form1; 
    public static Form Form2; 

} 

beim Start oder der Klick-Methode, würden Sie sagen, so etwas wie:

private void button1_Click(object sender, EventArgs e) 
{ 
    if (App.Form1 != null) 
     { 
     App.Form1 = new Form1(); 
     } 
    App.Form1.Show(); 
    App.Form2.Hide(); 
} 
+0

Ofc Sie würden null alle Formulareigenschaftsaufrufe überprüfen. Aber ich bin sicher, du bekommst das Shizzle. – Christian

Verwandte Themen