我使用以下代码创建一个新表单。
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