C# 如何让来自不同项目的两个窗口窗体相互显示和隐藏?

C# 如何让来自不同项目的两个窗口窗体相互显示和隐藏?,c#,visual-studio,circular-dependency,C#,Visual Studio,Circular Dependency,这是测试文件Form1.cs的代码: Testing2.Form1 t2 = new Testing2.Form1(); t2.Show(); this.Hide(); 当我点击“返回测试”时,我想打开Form1.cs of testing。我试图在Testing2上添加引用,但出现以下错误: 在测试2.表单1中,添加一个属性: public Form CallingForm {get; set;} 然后改变: Testing2.Form1 t

这是测试文件Form1.cs的代码:

        Testing2.Form1 t2 = new Testing2.Form1();
        t2.Show();
        this.Hide();
当我点击“返回测试”时,我想打开Form1.cs of testing。我试图在Testing2上添加引用,但出现以下错误:

测试2.表单1
中,添加一个属性:

public Form CallingForm {get; set;}
然后改变:

Testing2.Form1 t2 = new Testing2.Form1();
t2.Show();
this.Hide();
致:

然后,当您想从
Testing2.Form1
显示原始表单时,请执行以下操作:

if (CallingForm != null)
    CallingForm.Show();

这将满足您的目的-但您将无法从
Testing2.Form1
中实际实例化
Testing.Form1
(因为这确实会引入循环依赖).

如果是循环的,这意味着您需要将其提取到一个单独的项目/库中,并拥有两个参考。我已经将两个项目合并到了测试中。您是指
测试
项目还是
测试
解决方案?错误显然与项目有关,而不是表单。当
Testing
已经引用了“Testing”时,您试图将
Testing
项目添加为对
Testing2
的引用。你不能让两个项目相互依赖,仅此而已。将公共类型放在公共项目中从逻辑上讲,某些对象a依赖于(即引用)另一个对象B是没有意义的,而另一个对象B反过来又依赖于对象a。这会创建一个无法解析的循环依赖项(对象a更改>对象B需要重建,但随后它也更改>对象a需要重建,但随后它再次更改…)。这听起来有点像某种形式。你到底想做什么?
if (CallingForm != null)
    CallingForm.Show();