Don't. Instead, do it the other way: create an event in your child form, which the parent form subscribes to. That way, the child does not need to know anything about the existence of the parent - it just signals "I have data!" and the parent will process it as required if it is interested.
In the child form:
public partial class frmChild : Form
{
public event EventHandler Changed;
protected virtual void OnChanged(EventArgs e)
{
EventHandler eh = Changed;
if (eh != null)
{
eh(this, e);
}
}
private void DoSomethingToChangeData()
{
OnChanged(null);
}
}
----- The asign to eh is in case the handler changes between null check
----- and exec.
----- (unlikely, but possible)
----- The null check is to ensure there is a handler. If not, better to
----- ignore it gracefully, than to rely on the thrown exception
----- (NullReferenceException)
In the Parent form:
private void ShowChildForm()
{
frmChild fd = new frmChild();
fd.Change += new frmChange.ChangeHandler(Changed);
fd.ShowDialog();
}
private void Changed(object sender, EventArgs e)
{
}