No, it's not difficult.
The easiest way to do it (and the recommended if you are using ShowDialog) is to set up a Property in Form2 whichs gets and sets the value of your TextBox:
Form2:
public string UserName
{
get { return myUserNameTextBox.Text; }
set { myUserNameTextBox.Text = value; }
}
Form1:
Form2 f = new Form2();
f.UserName = "Default Name";
f.ShowDialog();
MessageBox.Show(f.UserName);
This way, the internals of Form2 are hidden - you could use first name and last name text boxes and Form1 would never need to konow - it just gets the whole name via the UserName property.