2015-06-27 29 views
0

我有两个WinForm对象,form1form2。我想要做的是:2种形式之间的相互作用(隐藏/显示)

a。当用户点击form1上的按钮时,该按钮将被隐藏,并且将出现form2的新实例。所以我做了:

form1.Hide(); 
form2 new_session = new form2(); 
form2.Show(); 

b。从form2,我希望用户能够点击一个按钮来恢复他从中生成form2实例的原始号码为form1。基本上,类似于:

form2.Hide(); 
form1.Show(); 

显然,form1在当前上下文中不存在。我知道解决这个问题的解决方案是建立在我指定form1form2的属性,这样我就可以再次把它叫做:

form1 pMyForm; 
public form1 myForm 
{ 
get{return pMyForm;} 
set{pMyForm = value;} 
} 

之前展现form2 ...

form2 new_session = new form2(); 
form2.myForm = this; 

但是,我觉得有一个更正确的方法来做到这一点。我想我可以找到form1form2的财产ParentForm,但我找到了null。同时,我试图将form1分配给form2的属性Parent,但我收到错误Top-level control cannot be added to a control

对于如何更好地处理这个问题你有什么建议吗?

+0

这可以帮助你! http://stackoverflow.com/questions/7273862/c-sharp-how-to-make-two-forms-reference-each-other –

+2

您已经知道如何做到这一点,因为您已经使用了通用解决方案解决这个问题。您添加到Form2的那个按钮知道如何在Form2类中运行代码。但是Button类并不知道有关Form2类的任何信息。只要以完全相同的方式来做就可以:举办一个活动。 –

回答