- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォーム間のデータ受け渡し2)
Visual Studio 2005のフォームアプリケーションのデータ受け渡しについて
このQ&Aのポイント
- Visual Studio 2005のフォームアプリケーションでプログラミングを行っている場合、メインフォームとサブフォームのデータ受け渡しをどのように行えばよいか悩んでいます。
- 起動時にサブフォームが表示されるため、まずメインフォームの上でサブフォームを表示させたいです。
- また、サブフォームで入力されたint型やdouble型のデータをメインフォームに引き渡す方法がわかりません。どのようにプログラムすればよいでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。VC++を使って最近プログラムを作っているので、参考になればと思い投稿しました。それほどVC++に精通していないので的外れなことを言っていたらごめんなさい。(^^; メインフォームからサブフォームを開いてそのサブフォームのテキストボックス等から値をメインフォームに引き渡すということであれば、以下のような方法で大丈夫かと思います。 (1)メインフォームに以下のように記述する。 subform^ ver = gcnew subform(); if(ver->ShowDialog()==System::Windows::Forms::DialogResult::OK) { *****処理を記述***** } (2)subform側にボタン等のコントロールを用意してそのコントロールのプロパティでDialogResultをOKに設定する (3)「処理を記述」のところに値の引渡しの処理を記述する。 例:String^ name = ver->textBox1->Text; これでsubformで設定したコントロールを操作すればメインフォーム側でsubform側のテキストボックスの値を取得できるはずです。
お礼
返事が遅れてすみませんです。急にPCの内部の機器がおかしくなったみたいで修理に出していました><; 私のやりたいことは、watataku70さんが記述してくれたとおりのことです。 非常にわかりやすいご説明ありがとうございます。 さっそく記述どおりプログラムを組んでみたのですが、 1.'pic::pic0::textBox3' : private メンバ (クラス 'pic::pic0' で宣言されている) にアクセスできません。 2.'pic::pic0::textBox3' の宣言を確認してください。 3.'pic::pic0' の宣言を確認してください。 といったエラーが表示されてしまいました。 1.の部分では if(p0->ShowDialog() == System::Windows::Forms::DialogResult::OK){ String^ r = p0->textBox3->Text; //r = double::Parse(p0->textBox3->text); } ここでは、ちゃんとサブフォームのコントーロール"DialogResult"でもOKと選択しています。 2.の部分では private: System::Windows::Forms::TextBox^ textBox3; 3.の部分では public ref class pic0 : public System::Windows::Forms::Form { public: pic0(void) { InitializeComponent(); // //TODO: ここにコンストラクタ コードを追加します // r = 0.0; } といった感じで記述しているのですが、どこか間違っている点はありますでしょうか?