アプリ版:「スタンプのみでお礼する」機能のリリースについて

フォーム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。
ボタンをクリックすると別フォームを表示して、そこで元のフォームで使った変数を使おうと考えています。

A 回答 (2件)

単にメンバ変数を使うのではだめなんでしょうか?



Form2 に

private:
  int year_;
public:
  void SetYear(const year) { year_ = year; }

ってなのを追加して、

Form2^ f = gcnew Form2();
f->SetYear(year);
f->Show();

とする。
    • good
    • 0
この回答へのお礼

どうやら検索ワードの内容が悪かったらしく、メンバ変数の項目に辿り着けていませんでした;

一部改修させていただきましたが、解決しました。

ありがとうございます。

お礼日時:2009/03/14 14:01

 こんばんは。


 では、取って来る方法を。但し、この手法の良し悪しまでは分かりません。

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;
    • good
    • 0
この回答へのお礼

こちらも試しに使わせていただきました。

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

ありがとうございます。

お礼日時:2009/03/14 14:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!