2013-10-25 53 views
-4

如何从C#中的其他表单关闭第二个表单?如何关闭第二个表格?

我在Form1中使用它,但它不起作用。

Form2 form2 = new Form2(); 

form2.Close(); 

怎么回事?

+3

您需要关闭的情况下,你'显示()'版。 – SLaks

+1

该代码创建第二个窗体的新实例,然后关闭它。请注意,你永远不会调用'form2.Show()'或'form2.ShowDialogue()',所以表单将永远不会显示。 – gunr2171

回答

0
据推测在该第一形式创建 Form2类型的一个实例,并显示了它的某个时间点

。然后它丢弃该参考。而不是抛出该基准远的,你应该把它存放在Form1一个实例字段,以便以后可以访问它,并将其关闭:

public class Form1 : Form 
{ 
    private Form2 child; 
    private void PlaceWhereForm2IsShown() 
    { 
     child = new Form2(); 
     child.Show(); 
    } 
    private void CloseForm2() 
    { 
     child.Close(); 
    } 
} 
+0

Thx,它的工作:) – user2920845

0

通过秒形式看来,形式是已经打开,你需要得到这种形式的实例,然后将其关闭。你可以使用Application.OpenForms属性,它会给你所有打开的表单。获取您需要的并关闭它。

var form2 = Application.OpenForms["Form2"] as Form2; 
if (form2 != null) 
    form2.Close(); 
+0

@Downvoter,关心评论? – Habib

+0

不是downvoter,但这看起来很脏。不是说这是错误的。 – gunr2171

+0

@ gunr2171,如果表单没有从当前表单打开,并且当前表单没有实例,那么它在WinForm应用程序中非常有用。 – Habib

相关问题