如何将数据从可见窗体传递到另一个可见窗体
本文关键字:窗体 另一个 数据 | 更新日期: 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
}