0

我使用下面的代码创建了一个新表单。

private void CNPictureBox2_DoubleClick(object sender, EventArgs e)
{
    RefImgForm RefImgForm = new RefImgForm();
    RefImgForm.MainFrm = this;
    RefImgForm.Show();
}

我想从我创建第二个表单的表单中发送数据。问题是我在创建新表单时无法将数据发送到新表单。当我从用户那里获取一些数据然后通过按钮单击事件发送这些数据时,我想发送数据。我怎样才能做到这一点?

4

2 回答 2

1

以第二种形式定义一个新方法

public void ReceiveData(....)
{
...
}

并在单击按钮时从第一个表单中调用它

private RefImgForm frm2 = null;
private void CNPictureBox2_DoubleClick(object sender, EventArgs e)
{
    frm2 = new RefImgForm();
    frm2.MainFrm = this;
    frm2.Show();
}
private void Button_Click(...)
{
    if (frm2 != null)
        frm2.ReceiveData(...);
}
于 2012-05-22T10:13:43.643 回答
0

在父表单中创建一个委托,如下所示:

      delegate void SendData(object data);
      SendData sendDataobj;

在子表单中创建一个方法,ProcessData并使用以下代码:

private void CNPictureBox2_DoubleClick(object sender, EventArgs e)
{
    RefImgForm RefImgForm = new RefImgForm();
    RefImgForm.MainFrm = this;
    sendDataobj = new SendData(RefImgForm.ProcessData)
    RefImgForm.Show();
}

要调用委托,您可以使用:

    sendDataobj(data);
    sendDataobj.Invoke(data);

两者都是同步调用。

如果你想异步调用它,你可以使用:

sendDataobj.BeginInvoke
于 2012-05-22T10:28:17.863 回答