2013-10-25 52 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

相關問題