0

以下のコードを使用して新しいフォームを作成します。

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

2番目のフォームを作成したフォームからデータを送信したい。問題は、作成時に新しいフォームにデータを送信できないことです。ユーザーからデータを取得し、ボタンクリックイベントでこのデータを送信するときにデータを送信したい。どうやってやるの?

4

2 に答える 2

1

2番目の形式で新しいメソッドを定義する

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 に答える