• 締切済み

【VC++2005(CLR)】子フォームから親フォームにデータを渡したい

いつも大変お世話になっております。 VC++初心者です。 現在、VC++2005、CLRプロジェクト(C++/CLI)で コーディングしています。 早速ですが、質問させて下記の内容について 質問させてください。 現在、Form1.hからForm2.hをモーダルで呼び出しています。 Form2.h終了時に、Form2.hで保持していたデータをForm1.hに 渡したいのですが、どのようにしたら宜しいでしょうか ※中間ファイルを作って、データ渡しはしない方法でお願いします。  

みんなの回答

回答No.1

Form1かForm2のクラスにPublicなデータメンバーを作成して、それを使う。 ・Form2のOnCloseでForm1のパブリックな変数に値をセット ・Form2で保持しているデータの変数をパブリックにして、Form1でForm2を開いて戻ってきた部分で、Form2を開放する前に、Form2のパブリックな変数から値を引き取る のどちらかの方法を使う。

yuki7091
質問者

お礼

一度、この質問を閉じさせて頂きます。 ご回答して頂き、ありがとうございました。

yuki7091
質問者

補足

ご回答、ありがとうございます。 教え頂いた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に値が格納できます。 何故でしょうか。 大変お手数かと思いますが、よろしくお願い致します。

専門家に質問してみよう