从此之后调用第二个表单时不关闭。Close()

时间:2018-10-09 07:58:39

标签: c# winforms

我有一个form1,它会打开一个form2,而后者又会打开form3。我想使用一个按钮从form3返回到form1。

form1

private void form2button_Click(object sender, EventArgs e)
{
    this.Hide();
    form2 f2 = new form2();
    f2.ShowDialog();
    this.Show();
}

form2

private void form3button_Click(object sender, EventArgs e)
{
    this.Close();
    form3 f3 = new form3();
    f3.ShowDialog();
}
private void exitbutton_Click(object sender, EventArgs e)
{
    this.Close();
}

form3

private void mainmenubutton_Click(object sender, EventArgs e)
{
    this.Close();
}
private void backbutton_Click(object sender, EventArgs e)
{
    this.Close();
    form2 f2 = new form2();
    f2.ShowDialog();
}

但是在form3中,单击“后退”按钮后,显示的是form2,但form3仍在后台。我通过在this.Hide();

之前添加this.Close();来解决此问题。

我想知道为什么会这样。

2 个答案:

答案 0 :(得分:0)

  

有没有办法让它出现在同一位置?

form2 f1 = new form2();
f1.Location = Location; //location of any form, it also clould be f3.Location if it is exists
f1.ShowDialog();
  

this.Hide()之间也有区别。和Hide(); ?

不,没有。

答案 1 :(得分:0)

如果我理解的正确,那么这就是返回第一种形式所需要的:

form1:

private void form2button_Click(object sender, EventArgs e)
{
    this.Hide();
    Account form2 = new Account();
    form2.ShowDialog();
    this.Show();
}

form2:

    private void form3button_Click(object sender, EventArgs e)
    {
        this.Hide();
        form2 f2 = new form2();
        f2.ShowDialog();
        this.Close();

    }
    private void exitbutton_Click(object sender, EventArgs e)
    {
        this.Close();
    }

form3:

private void mainmenubutton_Click(object sender, EventArgs e)
{
    this.Close();
}
private void backbutton_Click(object sender, EventArgs e)
{
    this.Close();
}
  

this.Hide()之间也有区别。和Hide(); ?

不,没有区别