2

C#の2番目のフォームからコールバックしようとしていますが、失敗しました。誰か助けてもらえますか?

    // Form 1 (Main form)
    public void CallBack()
    {
         if (radioBox1.Checked)
         {
              RefreshForm("TRUE");
         }
         else if (radioBox2.Checked)
         {
              RefreshForm("FALSE");
         }
    }

    private void RefreshForm(string Options)
    {
         // Do something here
    }

さて、2番目のフォーム

    // Form 2 (Child Form)
    Form1 form1 = new form1();
    private void timer1_Tick(object sender, EventArgs e)
    {
          form1.CallBack();
    }

残念ながら、コールバックが機能していません。間違ってコーディングしたものはありますか?助けてください...どうもありがとう!

4

3 に答える 3

2

CallBack作成したばかりの新しいインスタンスを呼び出しているため、機能しません。Form1これは、メインフォームと同じインスタンスではありません。

どういうわけかメインフォームを参照する必要があります。例:

(Application.OpenForms[0] as Form1).CallBack();

これは、メインフォーム(Form1)がアプリで最初に開いたウィンドウであると想定しています。

于 2013-03-07T11:41:47.010 に答える
0

メソッドにメッセージボックスを書き留めCallBack()ます。常に表示されます。

Form1の新しいインスタンスでは、radioBox1またはradioBox2がチェックされていないため、Callbackメソッドが呼び出されますが、何も起こりません。

于 2013-03-07T11:40:45.717 に答える
0

メソッドは、必要なメソッドではなく、callbackで呼び出されています。new instanceForm1

MDIインターフェースを使用しているため、メソッドを次のように更新できます。

private void timer1_Tick(object sender, EventArgs e)
{
      (this.MdiParent as Form1).CallBack();
}
于 2013-03-07T11:43:14.407 に答える