2017-07-18 81 views
0

我有一个项目A从项目B调用表单。项目A中的表单被禁用,项目B表单打开。关闭时,我需要项目B重新启用Project A表单,但它不允许我,因为由于循环引用我无法引用它。如何从项目A中引用项目B中的内容?2个项目,1个解决方案。项目A从项目B调用表单,反之亦然。 C#VS2010

+2

为什么不考虑项目C,在那里你可以参考项目A和B? – MKR

+2

这些形式相互依赖的事实应该告诉你他们属于同一个项目。 – Amy

+0

@ManojKumarRai我可以做到这一点,但我想要一个更优雅的解决方案。 –

回答

0

这听起来像B项目并不需要返回参考项目A.有,你可以做到这一点通过多种方式:

a)项目A的形式通过调用ShowDialog()上打开该项目B形式。它而不是Show()。这会自动禁用A的表单,直到B关闭。

b。)项目A的表单手动禁用自身并开始监听项目B表单上的FormClosed事件。当事件发生时,项目A的表单再次启用。

c)在一个特殊情况下,有时您需要A的表单来禁用和显示B的表单,有时您需要B的表单来禁用并显示A的表单,您可以通过让Project A创建两个表单并传递一个作为另一个的参考。将构造函数添加到以另一个表单作为参考的表单中:

private Form _formA; 

public FormB(Form formA) { 
    InitializeComponent(); 

    _formA = formA; 
} 

private void buttonFormA_Click(object sender, EventArgs e) { 
    _formA.ShowDialog(); 
} 
+0

我最终为这两个大型项目创建了几个名称空间,但是如果我使用了两个项目解决方案,那么您提出的建议将会取得诀窍。 –

相关问题