2013-07-09 52 views
0

我在Visual C++中使用winForm來構建我的程序。從第一個窗口我需要移動到另一個窗口上點擊按鈕。爲此,我使用下面的代碼,它工作正常。在Visual C++中從子窗口回到父窗口

private: System::Void button3_Click(Object^ sender, EventArgs^ e) { 
    this->Hide(); 
    Form2^ pp = gcnew Form2(); 
    pp->ShowDialog(); 
} 

但是,我需要在子窗口上的後退按鈕,點擊後會隱藏/禁用它並顯示父窗口。我怎樣才能做到這一點?

+0

你可以宣佈你的主要形式爲'static'使PP能達到的主要形式。 –

+0

我試過但沒有結果 – Why

+0

'ShowDialog'方法創建一個禁用其父項的模式對話框。因此,如果您將父窗口句柄傳遞給'ShowDialog'方法,則沒有理由必須隱藏父項。當對話被解除時,父母會自動重新啓用並仍然可見。 –

回答

1

的一切,如果你想要做一些導航類的東西,然後首先,你要去父母和孩子之間的代碼也無法正常工作。

現在我建議你的是,從父母將孩子創建一個全局變量。 一樣,

Form2^ pp ; 

初始化它在構造函數或創建父類的方法

一樣,

//Create method or constructor, 
pp = gcnew Form2(); 

,做你的導航 一樣,

private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) 
{ 
     this->Hide(); 
     pp->ShowDialog();  
} 

在這種情況下,不管你點擊button3多少次只有一個我兒童班的情況會顯示和隱藏。

不是你的問題是你想從子窗口回到父窗口窗體。你可以做到這一點使用this.Parent如表

一樣,

private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) 
{ 
    this->Hide(); 
    Form parentForm = (this.Parent as Form); 
    parentForm ->Show(); 
}