Mika's answer is perfectly valid and a good one at that.
An alternative, and perhaps what you are looking for, is calling
ShowDialog[
^] instead of simply Show. This means that the text in your Form2 has to be entered (or user cancels the form) before returning to Form1. This is usually an obvious choice because what purpose would Form2 still have if Form1 is closed?
Anyway, in that case you could put txtValue2 in a Property and read that from Form1, like so:
Form2 f2 = new Form2();
f2.ShowDialog();
textBox1.Text = f2.MyTextProperty;
f2.Dispose();
Hope that helps :)