Wie wechseln Sie zwischen Formen ohne neue Instanz des forms?
in meiner Anwendung habe ich vier Formen form1 form2 form3 form4 .und jedes Formular, das zwei buttons haben ich.e die Schaltflächen weiter und zurück wechseln Sie zwischen Formen .und meine Frage ist wie kann ich das Wechseln zwischen den Formen ohne neue Instanz des forms? unten ist mein code
In Form1:
public Form1()
{
InitializeComponents();
}
private void Next_Click(object sender, EventArgs e)
{
this.Hide()
Form2 form2 = new Form2();
form2.Show();
}
In Form2:
public Form2()
{
InitializeComponents();
}
private void Previous_Click(object sender, EventArgs e)
{
this.Hide();
Form1 form1 = new Form1();
form1.Show();
}
private void Next_Click(object sender, EventArgs e)
{
this.Hide();
Form3 form3 = new Form3();
form3.Show();
}
In Form3:
public Form3()
{
InitializeComponents();
}
private void Previous_Click(object sender, EventArgs e)
{
this.Hide();
Form2 form2 = new Form2();
form2.Show();
}
private void Next_Click(object sender, EventArgs e)
{
this.Hide();
Form4 form4 = new Form4();
form4.Show();
}
In Form4:
public Form4()
{
InitializeComponents();
}
private void Previous_Click(object sender, EventArgs e)
{
this.Hide();
Form3 form3 = new Form3();
form3.Show();
}
In Main:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
Im obigen code, ich bin neue Instanzen erstellen der Formulare, jedes mal..,Wie kann ich diese Vermeiden, und Wie kann ich Wechseln zwischen Formularen ohne die Schaffung neuer Instanzen von Formularen.... bitte helfen Sie mir
- Halten Sie eine öffentliche statische variable der alle Formen in einer globalen Klasse. initialisieren form2, form3, form4 in der form1-Funktion initialisieren. dann einfach aktivieren oder ausblenden, wie erforderlich.
- o fthe Antwort ist für Sie hilfreich markieren Sie ihn bitte als Antwort
- Danke für Eure Vorschläge..
- Kannst du bitte posten Sie Ihre Antwort als code? es könnte nur machen den job für mich und ich bekommen ein besseres Verständnis von dem, was du sagst... 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie den Zugriff auf Ihre Formulare nacheinander stellen Sie sicher, dass Sie die Show-Methode verwenden, weist der Besitzer auf die erstellte Form und ordnen Sie es einer Klasse level-variable, nachdem Sie Sie erstellen. So etwas sollte für Sie arbeiten.
Form1
Form2
Form3
Möglicherweise eine einfache Lösung. Sie können eine Klasse enthält statische Objekte alle Formulare, die Sie benötigen. So werden Sie in der Lage sein, um Zugriff auf all diese Formen von jedweder Form von Ihrer Wahl und die gute Sache ist, dass Sie einmalig initialisiert werden.
Versuchen Sie Dies:
Können Sie überprüfen wenn die form von Interesse existiert, und wenn nicht erstellen es:
Diese Funktion kann verwendet werden, um herauszufinden, ob ein Formular schon geöffnet ist oder nicht
call
IsFormAlreadyOpen(Form4)
wenn es true zurück, was bedeutet, dass Form4 ist bereits geöffnetund in Ihrem Fall
in
every forms constructor()
erstellen next-und previous forms-Objektund in die Schaltfläche klicken, ruft IsFormAlreadyOpen (), um herauszufinden, ob das Formular bereits geöffnet ist oder nicht und wenn es schon geöffnet, bringen Sie einfach das Formular im front -
andere weisen, die Anzeige im Formular mit obj.show () - Methode
und ausblenden oder schließen Sie das übergeordnete Formular
Sieht aus wie Sie versuchen, zu erreichen, wizard-ähnliche Funktion. Ich würde empfehlen, mit einer einzigen form. Dann, fügen Sie eine benutzerdefinierte Registerkarte Steuerelement, um es. Fügen Sie Schaltflächen, um die form, die bewegt, vorherigen und nächsten.
Anpassen, Registerkarte Steuerung, das ist, was Sie tun müssen:
Diesem Registerkarten-Steuerelement nur anzeigen einer Registerkarte zu einer Zeit. Obwohl, zur design-Zeit können Sie Sie alle sehen. Fügen Sie diese Tasten und Ihre form. Auf Schaltfläche klicken, werden lediglich die
SelectedIndex
- Eigenschaft des Register-Steuerelements.Ich hatte das gleiche Problem. Eine Anwendung, die ich brauchte, hatte viele Formen und ich musste wechseln zwischen Formularen vorwärts n rückwärts ohne Verlust der Daten. Ich kam mit der folgenden Lösung und es funktionierte für mich.
In der main (Programm.cs) - Datei schreiben Sie folgende zwei Klassen:
Erste Klasse ist für Globale Variablen, die verwendet werden können, über die Formen. Sie können den Zugriff auf jede variable von:
Zweiten Klasse ist, wo Sie definieren neue Instanz aller Ihrer Formen. Sie können hide n zeigen Sie überall in allen Formen von:
oder
Dies funktioniert reibungslos und perfekt für mich. Versuchen Sie es.
Entfernen Sie einfach die
this.hide()
in der ersten form und der[formNameHere].show();
in der zweiten form.Wie diese:
Form 1:
Form 2:
etc.. nicht gut im erklären, und mit C# wirklich. Aber dies sollte funktionieren.