0

コードで現在のフォームを閉じ、アプリケーションを閉じずに別のフォームを開くようにします(Visual C ++ 2010 Expressの場合)。これが私が使おうとしているコードです:

Form2^ form2=gcnew Form2();
form2->Show();
this->Close();

すべてのフォームを閉じたらアプリケーションを閉じる必要があるため、機能しthis->Hide()ません。

4

1 に答える 1

2

プロジェクトのメイン .cpp ソース コード ファイル (main() 関数を含むファイル) を開きます。その関数には、次のようなステートメントが表示されます。

Application::Run(gcnew Form1);

この Run() メソッドのオーバーロードにより、アプリのメイン フォームが閉じたときにプログラムが終了します。実行し続けたい場合は、これを別の方法で行う必要があります。単純な Run() オーバーロードを使用するのと同様に、すべてのウィンドウが閉じているときに Application::Exit() を呼び出します。これを行うには、次のように FormClosed イベントをサブスクライブします。

void ExitWhenLastWindowClosed(Object^ sender, FormClosedEventArgs^ e) {
    if (Application::OpenForms->Count == 0) Application::Exit();
    else Application::OpenForms[0]->FormClosed += gcnew FormClosedEventHandler(ExitWhenLastWindowClosed);
}

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 
    Form1^ first = gcnew Form1();
    first->FormClosed += gcnew FormClosedEventHandler(ExitWhenLastWindowClosed);
    first->Show();
    Application::Run();
    return 0;
}
于 2012-11-07T16:13:12.510 に答える