You really don't need to make the child form aware of the parent form. And it's generally bad practice to allow the child to make modifications to the parent.
Generally, you want the parent to change itself based on feedback from the child. As Johnny suggested, events are one way to do this.
If, however, you are also closing your form on the button click...say the form is only there to change the label, then you don't need to worry about events at all.
On form2 (which I seriously hope you have a better name for in your code), create a property called NewText or something similar. That property should be read-only and should just return the text within your textbox. Then, when the button is clicked, call this.DialogResult = DialogResult.Ok and hide that form.
On form1 (again, I hope you've named it better than that), show form2 using showdialog and if it returns an OK value, then you use the property on form2 to change the label.
Like so:
private void label1_Click(object sender, EventArgs e)
{
Form2 newForm = new Form2();
if (newForm.ShowDialog() == DialogResult.OK)
{
label1.Text = newForm.NewText;
}
}
public Form2()
{
InitializeComponent();
this.DialogResult = DialogResult.Cancel;
}
public void button1_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
this.Hide();
}
public string NewText {
get { return textBox1.Text; }
}
This doesn't require events and it doesn't require the child form to know about its parent. But, it only works if you're also hiding the form on the button click.