2013-09-30 26 views
1

我有一個名爲Form1的C#winform,這個winform有一個列表和一個按鈕。 我向該按鈕添加了一個click()事件,並向該列表添加了一個doubleclick()事件。 這兩起事件調用相同的方法:(在form1.designer.cs通過雙擊打開一個新的winform並關閉調用者窗口

this.myList.DoubleClick += new System.EventHandler(this.myMethod); 
this.myButton.Click += new System.EventHandler(this.myMethod); 

myMethod,我想要做如下操作:

  1. 打開一種新的winform Form2,並使其成爲主動式winform。

  2. 關閉調用者winform(種類Form1),不需要此表單了。

我做這樣的:(在Form1.cs中

private void myMethod(object sender, EventArgs e) 
{ 
    Form2 frm = new Form2();     
    this.dispose(); 
} 

myMethod正在由列表雙擊事件調用,當myMethod結束,還有一個空指針異常。 當它被按鈕點擊事件調用時,它正常工作。

我也試過this.close(),並得到相同的行爲。

我的問題:

  1. 我應該怎麼寫myMethod正常所以它會根據需要進行操作的按鈕單擊事件,也爲列表雙擊事件?

  2. 按鈕和列表有什麼區別?爲什麼它可以正常工作按鈕,但崩潰的列表?

感謝

+0

調用窗體是否實際關閉? –

+2

您應該調用Form.Close方法,而不是Dispose。 http://msdn.microsoft.com/en-us/library/system.windows.forms.form.close.aspx –

+0

我試着用this.Close以及同樣的問題。 – user1439691

回答

1

可以隱藏Form1並顯示Form2。這會引起一些問題,如關閉Form2 不會關閉Form1

this.Hide(); 
var form2 = new Form2(); 
form2.ShowDialog(); 
相關問題