No.,that isn't what your code is doing - you are trying to replace the existing Panel with a new version in your Page2 code:
this.panel1 = new Panel();
this.panel1.Controls.Add(SubForm);
That doesn't do what you want, however - because the old panel is still in the Form.Controls collection, not the new one - so the new subform1 is never displayed.
Change your code to just empty the old panel first:
panel1.Controls.Clear();
panel1.Controls.Add(SubForm);
And it should all work.
BTW: You don't need to specify
this
all the time - you only need it when there is confusion as to which version of two variables with the same name you mean:
private string text = "hello";
private string otherText = "12345";
private void change(string text)
{
this.text = "Goodbye";
text += " there";
otherText = text;
}