I think that you are closing your Form2 using the button1. This executes button1_click which doesn't simply close Form2, it closes the whole Application.
I tried your code and if I close Form2 using the X in the upper right corner it is closed and immediately reopened.
Should this be your problem, you can solve it by just modifying your method like this:
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
Another solution could be setting the DialogResult property of your button to something different from the default DialogResult.None. In this way when the button is clicked the form is automatically closed, and the value of the property is used as the result of your ShowDialog().