我有几种形式。
我们称他们为mainForm
,formA
和formB
。
在mainForm
上,有一个转到formA
的按钮,执行此操作的按钮具有以下代码:
private void buttonOpenFormA_Click(object sender, EventArgs e)
{
formA displayformA = new formA();
displayformA.Show();
this.Hide();
}
在formA
上,我有另一个按钮,可以这样打开formB
:
private void buttonOpenFormB_Click(object sender, EventArgs e)
{
formB displayformB = new formB();
displayformB.Show();
this.Hide();
}
返回mainForm
:
private void buttonGoBack_Click(object sender, EventArgs e)
{
mainForm displayMainForm = new mainForm();
displayMainForm.Show();
this.Close();
}
在formA上,这很有效。但是在formB上,同一块代码拒绝显示mainForm
。我做错了什么?
答案 0 :(得分:0)
我认为您可以简单地将MainForm对象传递给FormA,然后将FormA传递给FormB,然后单击按钮,您应该简单地显示您的FormA对象。
根据您的代码,您在此处显示新的MainForm对象,这是您在 buttonGoBack_Click 事件中创建新对象时第一次创建的。
您需要在FormA中进行更改
public MainForm mainForm {get;set;}
public FormA(MainForm mainForm)
{
this.mainForm= mainForm;
}
您需要在FormB中进行更改
public MainForm mainForm {get;set;}
public FormB(MainForm mainForm)
{
this.mainForm= mainForm;
}
private void buttonOpenFormA_Click(object sender, EventArgs e)
{
formA displayformA = new formA(this);
displayformA.Show();
this.Hide();
}
private void buttonOpenFormB_Click(object sender, EventArgs e)
{
formB displayformB = new formB(this.mainForm);
displayformB.Show();
this.Hide();
}
private void buttonGoBack_Click(object sender, EventArgs e)
{
(this.mainform as MainForm).Show();
this.Close();
}
答案 1 :(得分:0)
Main Form.cs
private void buttonOpenFormA_Click(object sender, EventArgs e){
formA displayformA = new formA();
displayformA.ShowDialog();
//to close the form
this.dialogResult=DialogResult.OK;
}
FormA.cs
private void buttonOpenFormB_Click(object sender, EventArgs e){
formB displayformB = new formB();
displayformB.ShowDialog();
//to close the form
this.dialogResult=DialogResult.OK;
}
private void buttonGoBack_Click(object sender, EventArgs e){
//to close the form
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
您只需要使用ShowDialog()
。每当您想要关闭时,请使用this.DialogResult=DialogResult.OK
。