2011-04-26 50 views
0

所以,我得到了這兩種形式,一種是按鈕,當你點擊它時,它會創建另一個按鈕可見。這部分工作正常,這是問題部分C# - 多個窗體幫助!

在另一種形式,當你點擊原始按鈕時彈出,當我點擊Form2上的CLOSE按鈕時,它的Suppost使Form1上的按鈕變爲隱形,但我只能參考這個表格...

Form1 Form1 = new Form1();

這將創建一個新窗體,我想使用EXSISTING OPEN ONE! - 我該怎麼做呢!

- 編輯---

有人說,這

Form2 form2 = new form2(); 
form2.ShowDialog(); 
this.button.Visible = false; 

會的工作,這是不對的,我不需要打開一個新的窗口2,我需要引用已經打開FORM2

+1

如果你粘貼你的代碼我會幫你出 – 2011-04-26 19:39:47

+0

表格。的WinForms? Web表單? WPF?我假設你發佈的是winform,你能證實嗎? – Oded 2011-04-26 19:40:36

+1

「這是錯的,...」 - 爲什麼接受答案? – 2011-04-26 20:20:30

回答

1

所有你需要做的是以下幾點:

Form2 form2 = new form2(); 
form2.ShowDialog(); 
this.button.Visible = false; 
0

當您創建Form2並在Form1中顯示它(可能通過構造函數)或註冊Form2的Closing事件時,您可以傳入Form1的引用,並在該事件上設置按鈕的可見性屬性。

0

當您從Form1的窗口2,你要重視形式2.

你應該這樣做與任何其他點擊事件的OnClose()事件。

然後在你的Form2_OnClose()中,你可以使button.Visible = false;

3

你需要做的是添加一個事件處理程序的FormClosing或FormClosed事件,然後做你想做的事,事件處理,像這樣:

就像這樣:

private void button1_Click(object sender, EventArgs e) 
    { 
     Form2 form = new Form2(); 
     form.FormClosing += new FormClosingEventHandler(form_FormClosing); 
     button2.Visible = true; 
     form.Show() //Or form.ShowDialog(), your choice 
    } 

    void form_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     button2.Visible = false; 
    } 
+0

我相信他問了Form2關閉時如何使Form1中的按鈕可見。 – 2011-04-26 19:42:57

+0

事實上,他說,當我關閉新窗體時,如何讓按鈕2變爲隱形...那就是這段代碼的作用 – thorkia 2011-04-26 19:44:18

+0

「當我點擊Form2上的CLOSE按鈕時,其(原文如此)suppost使Form1上的按鈕變爲隱形」 您的代碼創建Form1的第二個實例。誠然,我們可能在同一件事情上開着車,但原始文章的含糊不清讓人難以理解。 – 2011-04-26 19:45:26

1

首先,關閉大寫鎖定或讓你的手指離開shift鍵。

其次,你可以在你的第二種形式創建一個類型爲Form1的一個變量,然後傳遞一個參考的第一種形式的第二,即在啓動Form2的事件處理程序的構造函數,

Form2 f2 = new Form2(this); 

您現在將有一個參考回到您的第一個表單。