C# 如何让来自不同项目的两个窗口窗体相互显示和隐藏?
这是测试文件Form1.cs的代码: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
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();