【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()する直前の状態のフォームが表示されます。

シェアお願いします

  • このエントリーをはてなブックマークに追加
関連記事

関連記事

関連記事
スポンサーリンク

コメント

  1. かえで。 より:

    #include “Form2.h”
    :←こことかが全角になってるのですがいいのですか?
    :↙
    Form2^ frm = gcnew Form2();
    // モーダル表示
    frm->ShowDialog(this
    デバッグしたらエラーが出てここを半角にしたら上手く行きました。

    • akira より:

      分かりづらくて申し訳ありません...
      このコロン(:)の部分は #include “Form2.h” から Form2^ frm = gcnew Form2(); までにある書いてあるであろうソースコードの省略のつもりで書いてありました。
      そのため、このコロン(:)そのものは必要ありません。(本文も少し修正しました。)
      ただし、include文はcppファイルの先頭部分(#pragma once の次の行あたり)に記載するようにして下さい。
      以上、よろしくお願い致します。