在 C# 中从另一个表单填充创建的表单组件



我使用以下代码创建一个新表单。

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

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

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

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(...);
}

在父窗体中创建一个委托,如下所示:

      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

最新更新