Visual C++初心者です。visual studio2005を使用しています。
まず親フォームで名前を入力させ、「次へ」を押すと子フォームが出て来ます。
そこで好きな食べ物を入力させて「決定」ボタンを押すと子フォームが閉じ、親フォームのテキストボックスに
「○○さん、こんにちは!好きな食べ物は●●ですね」というメッセージを表示させる・・・というフォームアプリケーションを作りたいのです。
子フォームの表示は分かるのですが、そこで入力させた情報を親フォームに反映させる方法が分かりません。
できれば初心者でも分かる回答をして頂ければ有難く思います。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
こんばんは。
>>子フォームの表示は分かるのですが、そこで入力させた情報を親フォームに反映させる方法が分かりません。
子フォームの上に決定ボタンがあるのでしょうか。でしたら、子フォームから親フォームに向かって通知してあげないといけません。
以下参考程度に。
//親フォーム側
//変更してはいけないものにはconstをつける
public: System::Void PostFrom(const System::String^ sFood)
{
const System::String^ sName = "○○";//ココを改造しましょう
const System::String^ sMiddle = "さん、こんにちは、好きな食べ物は";
const System::String^ sFinish = "ですね。";
textBox1->Text = sName + sMiddle + sFood + sFinish;
}
//子フォーム側
#include "StdAfx.h"
#include "Form1.h"
#include "Form2.h"
using namespace MyApp;
//ボタンが押されたら
System::Void Form2::Done(System::Object^ sender, System::EventArgs^ e)
{
//親フォームにテキストを見せる(constなので変更されない)
dynamic_cast<Form1^>(this->Owner)->PostFrom(textBox1->Text);
}
No.2
- 回答日時:
親フォームから、子フォームのインスタンスにはアクセスできますよね? それを前提として・・
子フォームのクラスに、GetFoodName() という関数を作ります。
親フォームは、子フォームが閉じたら、子インスタンスに対してGetFoodName() を呼び出して、食品名を取得します。そのあと、親フォームがテキストボックスに表示する。
ウインドウの表示・終了と、インスタンスの生死のタイミングは異なることに注意しましょう。
子が親のテキストボックスを書き換えたり、親が子の内部を直接のぞくことはやめましょう。
No.1
- 回答日時:
1.グローバル変数
子フォームでグローバル変数に値を設定し、
子フォームが閉じられて親フォームに処理が戻った後に
親フォームがグローバル変数を参照する。
2.子フォームのクラスのコンストラクタに
親フォームのテキストボックスの参照を渡すか、
親フォームのStringの参照を渡して、子フォーム内で変更する。
例)
クラスAが親で、クラスBが子
親のテキストボックスの参照を渡す場合
class A
{
private:
TextBox^ textBox;
public:
A(void)
{
textBox= gcnew TextBox();
Form^ f = gcnew B(textBox);
}
};
class B
{
private:
TextBox^ textBox_A;
public:
B(TextBox^ tb)
{
textBox_A = tb;
}
};
textBox_A->Text に入れた文字列は親にも反映されます。
クラスBでもテキストボックスを別に作り、
テキストの変更イベントや、デストラクタで親のテキストボックスへ
反映するといいでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- JavaScript 空白で入力フォームのボタンをクリックしたら、ブラウザの上部からjavascriptで 表示されるアラ 1 2022/05/20 11:16
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Form_Load と Form_Activate の...
-
ユーザーフォームを表示中にシ...
-
'ユーザーフォーム右上隅の[×...
-
エクセルVBAのフォームを最...
-
VBAで画像を表示する方法
-
モーダルフォームとモードレス...
-
Hideについて(.NET)
-
ユーザーフォームのテキストボ...
-
Microsoft Formsの「個人情報や...
-
クリックイベントなのに、2回ク...
-
ユーザーフォームのコピー?
-
ACCESSのフォーム、開くんです...
-
ExcelVBAのユーザーフォームの...
-
MSGBOXのフォント大きさ変更
-
複数モニタ使用時のフォームの...
-
Accessで、一つのフォーム画面...
-
指定の動作中ユーザーフォーム...
-
フォームに引数を渡す方法のやり方
-
フォームを最背面に設定したい...
-
ユーザーフォームのラベルに時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
クリックイベントなのに、2回ク...
-
Microsoft Formsの「個人情報や...
-
ユーザーフォームのテキストボ...
-
【VBAユーザーフォームで閉じる...
-
モーダルフォームとモードレス...
-
VBAでユーザーフォームを再表示...
-
エクセルVBAのフォームを最...
-
MSGBOXのフォント大きさ変更
-
Form_Load と Form_Activate の...
-
ユーザーフォーム上に現在日時...
-
Excelにて、ユーザーフォームで...
-
Hideについて(.NET)
-
フォームウィンドウを最前面に...
-
コントロールの存在確認
-
VBA(エクセル)のユーザー...
-
'ユーザーフォーム右上隅の[×...
-
エクセルVBA フォーム上でOnkey...
-
ブックをCloseまたはQuitで閉じ...
おすすめ情報