It doesn't get executed when you do
form.Show()
because it's part of the constructor code: it gets executed when the form is created by
Form2 form = new Form2();
And at no other time.
Move the code from the constructor to the
Shown
event and it will be executed the first (and only the first) time the form is actually displayed.