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

时间:2012-05-22 10:09:52

标签: c# forms

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

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

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

2 个答案:

答案 0 :(得分: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(...);
}

答案 1 :(得分: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