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

 

【C++/CLI】新しくウィンドウを開く/閉じる」への2件のフィードバック

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

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください