There are many valid ways to go about making inter-Form communication possible. A key question in this type of scenario is "what implements what ?"
If your Form1 creates, and 'Shows, Form2, then the "live" instance of Form1 can keep a reference to the "live" instance of Form2.
So, if you define a public method in Form2, code in Form1 can access it via the reference to Form2.
For example:
public void updateDataGrid(string updateText)
{
dataGridView1.Rows[0].Cells[0].Value = updateText;
}
The advantage of a public method in Form2 is the fact that you have kept the two Forms relatively "loosely coupled;" the instance of Form2 doesn't know "who" calls this method. Trust me, that's good.
In your case, it's important to define what you mean by "live update." Is it the case that every time the user interacts
in any way with the TextBox on Form1 you want that change instantly updated in the DataGridView Cell on Form2 ?
In that case, consider defining a TextChanged EventHandler for the TextBox on Form1, and call the public method on Form2 that you have a reference to, passing the current 'Text property of the TextBox.
If Form2 is not created by Form1, then a different strategy is indicated.