【C++/CLI】新しくウィンドウを開く/閉じる

例えば、Form1からForm2というフォームを表示する場合は、

 

モーダル表示

表示したウィンドウしか操作できないウィンドウを開く

#include "Form2.h"

(中略)

Form2^ frm = gcnew Form2();
// モーダル表示
frm->ShowDialog(this);

 

モーダレス表示

表示したウィンドウと表示元のウィンドウの両方が操作できる

#include "Form2.h"

(中略)

Form2^ frm = gcnew Form2();
// モーダレス表示
frm->Show(this);

 

フォームを閉じる場合

frm->Close();

のようにします。

 

ShowDialogおよびShowの引数で渡しているthisは無くてもよいのですが、このthisを渡す事で、
Form2からthis->Ownerを参照する事で、親のフォーム(どのフォームから呼ばれたのか?)が分かるので、thisを渡した方が何かと便利です。

 

また、

frm->Hide();

のようにすると、フォームそのものは破棄されずウィンドウを非表示にする事ができます。
そのため、再びウィンドウを表示したい場合は、再度

frm->Show();

を呼び出すと、Hide()する直前の状態のフォームが表示されます。