- 締切済み
【VC++2005(CLR)】子フォームから親フォームにデータを渡したい
いつも大変お世話になっております。 VC++初心者です。 現在、VC++2005、CLRプロジェクト(C++/CLI)で コーディングしています。 早速ですが、質問させて下記の内容について 質問させてください。 現在、Form1.hからForm2.hをモーダルで呼び出しています。 Form2.h終了時に、Form2.hで保持していたデータをForm1.hに 渡したいのですが、どのようにしたら宜しいでしょうか ※中間ファイルを作って、データ渡しはしない方法でお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- chie65536(@chie65535)
- ベストアンサー率44% (8741/19839)
回答No.1
Form1かForm2のクラスにPublicなデータメンバーを作成して、それを使う。 ・Form2のOnCloseでForm1のパブリックな変数に値をセット ・Form2で保持しているデータの変数をパブリックにして、Form1でForm2を開いて戻ってきた部分で、Form2を開放する前に、Form2のパブリックな変数から値を引き取る のどちらかの方法を使う。
お礼
一度、この質問を閉じさせて頂きます。 ご回答して頂き、ありがとうございました。
補足
ご回答、ありがとうございます。 教え頂いた2番目の方法でできました。 ありがとうございました。 さらに質問なのですが >・Form2のOnCloseでForm1のパブリックな変数に値をセット の場合、 public: System::String^ strForm1_AAA; Form1でpublic変数を宣言しました。 そのとき、Form2でstrForm1_AAAを呼び出すにはどのような コードになるのでしょうか。 (Form1のインスタンス名は何になるのでしょうか。) >・Form2で保持しているデータの変数をパブリックにして、 >Form1でForm2を開いて戻ってきた部分で、 >Form2を開放する前に、Form2のパブリックな変数から値を引き取る の場合、 Form2で、public: System::String^ strForm2_AAA; を宣言しました。 そして、Form1でForm2を呼び出すため、Form1内の関数で 以下のようにコーディングしました。 private: System::String^ GetForm2Data(){ Form2^ form2_01 = gcnew Form2(); Form2_01->ShowDialog(this); String^ aaa = form2_01->strForm2_AAA; return aaa; } この場合、この関数を出たときに、インスタンスform2_01は 破棄されるでしょうか。 確認のため、以下のソースを書きました。 private: System::String^ GetForm2Data(){ Form2^ form2_01 = gcnew Form2(); Form2_01->ShowDialog(this); delete form2_01; aaa = form2_01->strForm2_AAA; return aaa; } この場合、form2_01をdeleteにも関わらず、 aaaに値が格納できます。 何故でしょうか。 大変お手数かと思いますが、よろしくお願い致します。