循环引用...只是为了显示不同项目的形式

时间:2015-03-04 12:45:58

标签: c#

我是C#的新手,我在整合两个不同的项目时遇到了一些困难。 场景是:

项目A和项目B正在处理同一个项目。项目A有很多表格。我添加了项目B作为项目A的参考,通过实例化表单在项目B中显示表单。现在,一旦实例化表单出现并且用户单击按钮...我想要显示项目A中的表单。但是,由于循环引用...我无法实现它。

我读到了在这种情况下使用接口。但是,我不知道如何使用接口将Form作为对象传递。

请帮助..

2 个答案:

答案 0 :(得分:1)

让我们调用表格1(项目A),2(项目B)和3(项目A)。

从Form1打开Form2时,传递一个匿名方法/ lambda,使Form2能够打开Form3。

在Form2中:

public Action OpenForm3 { get; set; }

在Form1中,在实例化之后但在显示Form2之前:

myForm2.OpenForm3 = () => { var myForm3 = new Form3(); myForm3.ShowDialog(); };

在Form3中:

this.OpenForm3.Invoke();

答案 1 :(得分:0)

考虑项目的状态管理器对象。问题是项目B(表格B)的视图直接将用户引导到项目A(表格A)的视图,反之亦然,因此每个项目都依赖于其他项目。 您可以创建基础结构项目 它处理状态,因此对于客户端的每个状态,您通过定义规则(通过xml或类似的东西)来显示特定视图。 因此,当用户单击按钮时,您告诉状态管理器对象用户单击了表单B中的按钮,状态管理器在其规则中查看从当前状态和当前操作它应该转到另一个状态,以及另一个国家的观点是表格A.