如何将数据从可见表单传递到另一个可见表单?

时间:2012-01-23 01:11:15

标签: c#

我有两种形式,即:FormA和FormB。

假设FormA当前可见,我需要将数据传递给FormB。

我可以通过使用构造函数轻松地完成这项工作,

 FormB PassToThisForm = new FormB(int Data);
 PassToThisForm.ShowDialog();

现在,我的问题是如何从FormB获取一些数据,而FormA是当前可见的?

我不能这样:

  FormA main = new FormA();

因为它会创建一个FormA的新实例......任何想法?

提前致谢^ _ ^

2 个答案:

答案 0 :(得分:1)

您可以使用FormBY的构造函数传递对FormS的引用。

您的Form类看起来像这样:

partial class FormB
{

     private FormA reftoA; 

     public FormB(FormA formref, int Data)
     {
          reftoA= formref;
     }

     private void SomeMethodToChangeSomethinginFormA()
     {
              reftoA.SomeProp= 4;
     }
}

答案 1 :(得分:0)

我以前通过以下方式完成此操作: FormB实现一个接口,该接口包含FormA的值的属性。在FormA的构造函数中,我声明了该接口的参数。然后我在依赖注入容器中声明FormB是为该接口传递给FormA的实现。

public interface ISomeInterface
{
    int SomeProperty { set; }
}

public class FormB : Form, ISomeInterface
{
    int SomeProperty { set; private get; }

    // rest of FormB code
}

public class FormA
{
    private readonly ISomeInterface someInterface;
    FormA(ISomeInterface someInterface)
    {
        if (someInterface == null) throw new ArgumentNullException();
        this.someInterface = someInterface;
    }

    // then in FormA you can refer to someInterface.SomeProperty
}