我有两种形式,即:FormA和FormB。
假设FormA当前可见,我需要将数据传递给FormB。
我可以通过使用构造函数轻松地完成这项工作,
FormB PassToThisForm = new FormB(int Data);
PassToThisForm.ShowDialog();
现在,我的问题是如何从FormB获取一些数据,而FormA是当前可见的?
我不能这样:
FormA main = new FormA();
因为它会创建一个FormA的新实例......任何想法?
提前致谢^ _ ^
答案 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
}