如何将数据从可见窗体传递到另一个可见窗体

本文关键字:窗体 另一个 数据 | 更新日期: 2023-09-27 18:21:10

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

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

我可以通过使用构造函数轻松地做到这一点

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

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

我不能这样:

  FormA main = new FormA();

因为它将创建FormA的新实例。。。知道吗?

提前感谢^_^

如何将数据从可见窗体传递到另一个可见窗体

您可以使用FormB的构造函数传递对FormA的引用。

你的FormB类可能看起来像这样:

partial class FormB
{
     private FormA reftoA; 
     public FormB(FormA formref, int Data)
     {
          reftoA= formref;
     }
     private void SomeMethodToChangeSomethinginFormA()
     {
              reftoA.SomeProp= 4;
     }
}

我之前已经这样做了,例如让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
}