Why do u hide it? What for?
Just create new instance of your form.
private void button1_Click(object sender, EventArgs e)
f = new Form2();
Also, as I understand, the garbage collector will dispose your form in some time, and f.Show will throw an exception. So, create instance every time.