• ベストアンサー

VC++2008 フォーム間の変数の受け渡しについて

フォーム1で DateTime d1; int year; d1 = DateTime::Now; year = System::Int32::Parse( d1.ToString("yyyy") ); で読み込んだ現在の年数を、フォーム2で使いたい場合どうすればいいのでしょうか? private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { Form2^ f = gcnew Form2(); f->Show(); } でForm2を読み込んでいるので、ここに「変数yearを使う」旨を書けばいいのかとも思いましたが、うまく行きませんでした。 使用しているのはVisualC++2008 ExpressEdition。 ボタンをクリックすると別フォームを表示して、そこで元のフォームで使った変数を使おうと考えています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

単にメンバ変数を使うのではだめなんでしょうか? Form2 に private:   int year_; public:   void SetYear(const year) { year_ = year; } ってなのを追加して、 Form2^ f = gcnew Form2(); f->SetYear(year); f->Show(); とする。

35a94
質問者

お礼

どうやら検索ワードの内容が悪かったらしく、メンバ変数の項目に辿り着けていませんでした; 一部改修させていただきましたが、解決しました。 ありがとうございます。

その他の回答 (1)

回答No.2

 こんばんは。  では、取って来る方法を。但し、この手法の良し悪しまでは分かりません。 public ref class Form1 : ... { private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { Form2^ f = gcnew Form2(); //f->Ownerで見れる f->Show(this); //OwnerにしないのならTag辺りに入れる //f->Tag = this; //f->Show(); } //プロパティ public: property int Year { public: int get(){ return this->year; } }; //メンバ変数 private: int year; }; // //Form2の何処かで・・・ // //Form1を取り出す Form1^ f = dynamic_cast<Form1^>(this->Owner); //Tagに入れたのならこっちから取る //Form1^ f = dynamic_cast<Form1^>(this->Tag); //無いので引き返す if(f == nullptr)return; //ゲットする f->Year;

35a94
質問者

お礼

こちらも試しに使わせていただきました。 キャストなどまだ使ったことのない関数もありますが、いずれ使いこなせるようにしたいと思います。 ありがとうございます。