Ich habe ein Formular, das mit der ShowDialog-Methode geöffnet wird. In diesem Formular habe ich einen Button namens More . Wenn wir auf More klicken, wird ein anderes Formular geöffnet und das aktuelle Formular geschlossen.
bei Click-Handler für weitere Schaltflächen habe ich den folgenden Code geschrieben
MoreActions objUI = new MoreActions ();
objUI.ShowDialog();
this.Close();
Was aber passiert, ist, dass es nicht die erste Form schließt. Also habe ich diesen Code in geändert
MoreActions objUI = new MoreActions ();
objUI.Show();
this.Close();
Hier wird das zweite Formular angezeigt und innerhalb von Sekunden werden beide Formulare geschlossen.
Kann mir jemand helfen, das Problem zu beheben. Was ich tun muss, ist: Wenn wir auf die Schaltfläche Mehr klicken, sollte ein anderes Formular geöffnet und das erste Formular geschlossen werden.
Jede Art von Hilfe wird mir wirklich helfen.
Meines Erachtens sollte das Hauptformular dafür verantwortlich sein, beide Kindformulare zu öffnen. Hier ist ein Pseudo, der erklärt, was ich tun würde:
// MainForm
private ChildForm childForm;
private MoreForm moreForm;
ButtonThatOpenTheFirstChildForm_Click()
{
childForm = CreateTheChildForm();
childForm.MoreClick += More_Click;
childForm.Show();
}
More_Click()
{
childForm.Close();
moreForm = new MoreForm();
moreForm.Show();
}
Sie müssen nur ein einfaches Ereignis MoreClick im ersten Kind erstellen. Der Hauptvorteil dieses Ansatzes ist, dass Sie ihn bei Bedarf replizieren können und sehr einfach einige grundlegende Arbeitsabläufe modellieren können.
Wenn ich Sie richtig verstanden habe, versuchen Sie es so?
das sehr gut finden?
fügen Sie in Ihrer Form1 dieses Ereignis in Ihre Schaltfläche ein:
// button event in your Form1
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog(); // Shows Form2
}
dann in deinem Form2 füge auch dieses Event in deinem Button hinzu:
// button event in your Form2
private void button1_Click(object sender, EventArgs e)
{
Form3 f3 = new Form3(); // Instantiate a Form3 object.
f3.Show(); // Show Form3 and
this.Close(); // closes the Form2 instance.
}
ok also habe ich das benutzt:
public partial class Form1 : Form
{
private void Button_Click(object sender, EventArgs e)
{
Form2 myForm = new Form2();
this.Hide();
myForm.ShowDialog();
this.Close();
}
}
Dies scheint gut zu funktionieren, aber das erste Formular ist nur versteckt und kann immer noch Ereignisse generieren. "this.Close ()" wird benötigt, um das erste Formular zu schließen. Wenn Sie jedoch möchten, dass Ihr Formular ausgeführt wird (und nicht wie ein Launcher wirkt), MÜSSEN Sie es ersetzen
this.Show();
Viel Glück!
Ich würde einen Wert verwenden, der gesetzt wird, wenn mehr Schaltflächen beim ersten Dialog geschlossen werden und dann das ursprüngliche Formular den Wert testen und dann den dortigen Dialog anzeigen lässt.
Für die Ex
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private bool DrawText = false;
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog();
if (f2.ShowMoreActions)
{
Form3 f3 = new Form3();
f3.ShowDialog();
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public bool ShowMoreActions = false;
private void button1_Click(object sender, EventArgs e)
{
ShowMoreActions = true;
this.Close();
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
}
Versuche dies..
//button1 will be clicked to open a new form
private void button1_Click(object sender, EventArgs e)
{
this.Visible = false; // this = is the current form
SignUp s = new SignUp(); //SignUp is the name of my other form
s.Visible = true;
}
sie können dieses Beispiel betrachten
//Form1 Window
//EventHandler
Form1 frm2 = new Form1();
{
frm2.Show(this); //this will show Form2
frm1.Hide(); //this Form will hide
}
Beispielsweise haben Sie eine Button
mit dem Namen Button1
. Klicken Sie zuerst darauf, um die EventHandler
dieses Button2
zu öffnen, um eine andere Form
aufzurufen. Schreiben Sie den folgenden Code in Ihren Button.
your name example=form2.
form2 obj=new form2();
obj.show();
Um form1 zu schließen, schreiben Sie den folgenden Code:
form1.visible=false;
Oder form1.Hide();
Sie könnten versuchen, einen Bool hinzuzufügen, damit der Algorithmus weiß, wann die Schaltfläche aktiviert wurde. Wenn es angeklickt wird, prüft der Bool true, das neue Formular wird angezeigt und das letzte wird geschlossen.
Es ist wichtig zu wissen, dass Formulare etwas RAM verbrauchen (zumindest ein wenig). Daher ist es eine gute Idee, diejenigen zu schließen, die Sie nicht verwenden werden, anstatt sie nur zu verstecken. Macht den Unterschied bei großen Projekten.