2013-05-02 66 views
2

我已經使用這個代碼從目前的形式打開一個新的形式:如何在第二種形式打開時禁用第一種形式?

private void add_Click(object sender, EventArgs e) 
{ 
     add obj = new add(); 
     obj.Show(); 
} 

private void welcome_FormClosed(object sender, FormClosedEventArgs e) 
{ 
     Application.Exit(); 
} 

private void view_Click(object sender, EventArgs e) 
{ 
     view obj = new view(); 
     obj.Show(); 
} 

private void update_Click(object sender, EventArgs e) 
{ 
     update obj = new update(); 
     obj.Show(); 
} 

private void delete_Click(object sender, EventArgs e) 
{ 
     delete obj = new delete(); 
     obj.Show(); 
} 

在此,如果我打開任何形式的,那麼前面的形式也照常工作。 我想,如果一個窗體打開,然後所有其他以前的窗體關閉或禁用,聽起來像一個單擊事件上一個按鈕的嘟嘟聲。

+7

使用ShowDialog()而不是Show(); – Fendy 2013-05-02 08:30:19

+0

@Fendy剛剛建議它,但你比我快20秒) – 1Mayur 2013-05-02 08:31:14

+0

請你解釋show和showdialog的區別 – user2327043 2013-05-02 08:35:10

回答

4

爲什麼不嘗試隱藏表單,然後在被調用表單關閉時關閉它,以便它不會留在內存中。喜歡這個。

讓我們在Form1上說,你點擊一個按鈕,以顯示窗體2

Form2 frm2 = new Form2(); 
frm2.Activated += new EventHandler(frm2_Activated); 
frm2.FormClosed += new FormClosedEventHandler(frm2_FormClosed); 
frm2.Show(); 

現在,這個人是當窗體2顯示或激活隱藏主叫形式,在這種情況下,在Form1

private void frm2_Activated(object sender, EventArgs e) 
    { 
     this.Hide(); // Hides Form1 but it is till in Memory 
    } 

這一個當被調用的表單在這種情況下被關閉的情況下Form2它也將關閉Form1,以便它不會留在內存中。

private void frm2_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     this.Close(); // Closes Form1 and remove this time from Memory 
    } 
+0

現在你會解釋一下,這個代碼做什麼 – user2327043 2013-05-02 10:08:53

+0

看到我的意見上面@ user2327043,上帝保佑。 – Edper 2013-05-02 10:20:03

+1

歡迎您@ user2327043。 – Edper 2013-05-02 10:33:40

1

嘗試使用,這將關閉您當前的表單。

obj.ShowDialog(); 
this.close(); 
4

您必須使用ShowDialog而不是Show

ShowDialog的():

打開一個窗口,並且僅當被關閉時新打開的窗口返回。

展():

打開一個窗口,並返回,而無需等待新打開的窗口關閉。

+0

謝謝先生.. – user2327043 2013-05-02 10:25:29

相關問題