2011-06-15 60 views
1

我想點擊一個窗體中的按鈕,這樣做會隱藏現有的窗體並顯示新的窗體,雖然我有有問題,還有屏幕上不同位置的「生成」形式的問題!使用按鈕/事件來顯示一個新窗體並隱藏在C#中的現存的一個#

我的代碼如下:

private void button1_Click(object sender, EventArgs e) 
{ 
    (new Form3()).Show(); 
    (new Form2()).Hide(); 
} 

這段代碼顯示了新的形式確定,但窗口2不隱藏

+0

你怎麼知道新的Form2沒有隱藏? – 2011-06-15 21:37:45

+0

[如何在C#中使用按鈕事件切換窗體]的可能重複(http://stackoverflow.com/questions/6364475/how-to-switch-forms-in-c-using-a-button-event) – 2011-06-15 21:38:20

+0

這將是'this.Hide()'。但請不要將後續問題作爲新問題發佈。 – 2011-06-15 21:39:01

回答

3

你正在創建的Form2新實例,隱藏那一個。我猜你正在尋找:

private void button1_Click(object sender, EventArgs e) 
{ 
    (new Form3()).Show(); 
    this.Hide(); 
} 
2

如果你想隱藏某種形式的,你需要呼籲的.Hide()方法它的正確實例。因此,例如,當您創建表單,你可以將其存儲到一些變量:

Form2 form2 = new Form2(); 

後來當你要隱藏這種形式:

form2.Hide(); 
1

你正在隱藏一個新的表單。你應該做的是保持對你已經打開的窗體的引用,然後將其隱藏:

private void button1_Click(object sender, EventArgs e) 
{ 
    form3.Show(); 
    form2.Hide(); 
} 
private Form2 form2 = new Form2(); 
private Form3 form3 = new Form3(); 
0

不能創建窗體2的新實例,並期望在現有的Form2被隱藏。將現有Form2存儲到您的類的實例變量並在該實例上調用Hide()。

1

代碼(new Form2()).Hide();實例化一個新實例Form2。爲了隱藏現有的表單,您需要參考它。

0

如果你想隱藏現有的表單,(new Form2()).Hide()不會這樣做,因爲那樣會從類Form2實例化一個新表單。

假設Button1的是要隱藏的形式,你想:

private void button1_Click(object sender, EventArgs e) 
{ 
    (new Form3()).Show(); 
    this.Hide(); 
} 

如果它是不一樣的形式,你需要表單的引用要隱藏:

private Form2 form2 = new Form2(); 
private Form3 form3 = new Form3(); 
form2.Show(); 

private void button1_Click(object sender, EventArgs e) 
{ 
    form2.Hide(); 
    form3.Show(); 
} 
0

@ BFree's是一個很好的答案。只是爲了咧嘴笑,在Form1_Load執行初始實例化和Show()之後,這裏有一些帶有兩個按鈕的代碼,這兩個按鈕可以切換兩個其他子Form2和Form3。

Form2 f2 = null; 
Form3 f3 = null; 

private void Form1_Load(object sender, EventArgs e) 
{ 
    f2 = new Form2(); 
    f2.Show(); 

    f3 = new Form3(); 
    f3.Show(); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    if (f2.Visible) 
    { 
     f2.Hide(); 
    } 
    else 
    { 
     f2.Show(); 
    } 
} 

private void button2_Click(object sender, EventArgs e) 
{ 
    if (f3.Visible) 
    { 
     f3.Hide(); 
    } 
    else 
    { 
     f3.Show(); 
    } 
} 
相關問題