- PR -

Form1より表示されたForm2に表示されているテキストの変更方法

投稿者投稿内容
osako
常連さん
会議室デビュー日: 2006/10/31
投稿数: 35
投稿日時: 2007-04-11 14:31
VC++2005Expressを使用して、Windowsフォームアプリケーションで作成中ですが、
VC++/NETに関して調べたんですが、なかなか情報がなくて質問させていただきます。

簡単にForm1よりテキストを入力し、それがForm2に表示されるようにしたいと思い、下記のように書いたのですが、

Form1.h
----Form1のボタンよりForm2を表示させる---
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

  Form2^ F = gcnew Form2();
  F->Show();
}

----Form1のテキストボックスの内容をForm2のテキストボックスへ表示させる---
private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) {

  Form2^ F2 =gcnew Form2();

  F2->textBox1->Text=this->textBox1->Text;
}

という感じで書いたのですが、コンパイルは通り、Form2は表示されますが、
Form2のテキストは変更されません。
どのように書けばよいのでしょうか?

どなたか、漠然とした情報の少ない質問で申し訳ないのですが、
よろしくお願いします。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-04-11 14:50
引用:

osakoさんの書き込み (2007-04-11 14:31) より:

VC++2005Expressを使用して、Windowsフォームアプリケーションで作成中ですが、
VC++/NETに関して調べたんですが、なかなか情報がなくて質問させていただきます。


osakoさんが質問されるたびにいつも思うのですが「VC++/NETに関して
調べた」という、その調べた部分を示した方が良いかと思います。
どこまでができていて、なにができていないのか。それを他人にはっきりと
示すことがまずは大事だと思います。
極論ですが、それができるまでは質問しない方が良いこともあります。
曖昧なまま質問されても、混乱の元になるだけですし。

引用:

Form1.h
----Form1のボタンよりForm2を表示させる---
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

  Form2^ F = gcnew Form2();
  F->Show();
}


ここで作成した「Form2^ F」と

引用:

----Form1のテキストボックスの内容をForm2のテキストボックスへ表示させる---
private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) {

  Form2^ F2 =gcnew Form2();

  F2->textBox1->Text=this->textBox1->Text;
}


ここの「Form2^ F2」のインスタンスが別物である、という認識はあります
か?
というか別物ではあるのですが、なぜ別物なのかはわかりますか?
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
さる
ぬし
会議室デビュー日: 2005/07/14
投稿数: 276
お住まい・勤務地: 実家戻ったw
投稿日時: 2007-04-11 14:51
引用:

osakoさんの書き込み (2007-04-11 14:31) より:
----Form1のテキストボックスの内容をForm2のテキストボックスへ表示させる---
private: System::Void textBox1_TextChanged(System:bject^ sender, System::EventArgs^ e) {



VC++は一度も勉強した事ないから的外れだったらすいません。

textBox1_TextChangedってtextBox1が編集された時に呼ばれるメソッドでは?
Form2のインスタンスを作成した段階でインスタンスの配下のtextBox1のvalueを変えるんじゃないの?
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2007-04-11 15:16
引用:

ぽぴ王子さんの書き込み (2007-04-11 14:50) より:
ここで作成した「Form2^ F」と
(snip)
ここの「Form2^ F2」のインスタンスが別物である、という認識はあります
か?
というか別物ではあるのですが、なぜ別物なのかはわかりますか?




コード:
----Form1のテキストボックスの内容をForm2のテキストボックスへ表示させる---
private: System::Void textBox1_TextChanged(System:bject^  sender, System::EventArgs^  e) {

  Form2^ F2 =gcnew Form2();

  F2->textBox1->Text=this->textBox1->Text;
    F2->Show();	 
}


とするとどなうるのかやってみると視覚的にわかりやすいかと。

このあたりの変数の概念は.NET云々はまったく関係ないですね。
C言語の基礎中の基礎でしょうか。
osako
常連さん
会議室デビュー日: 2006/10/31
投稿数: 35
投稿日時: 2007-04-11 15:45
ぽぴ王子さんありがとうございます。
ご指摘のところ分かっていませんでした。別物だから、うまくいかないのですね。
さるさん、Blueさん分かりやすい解説ありがとうございます。
確かに、同じインスタンスにすれば、Form1に入れた内容がForm2に表示されます。
理解できました。
このインスタンスの定義(定義って言葉であっているのでしょうか?)をForm1.h内などでグローバルで定義する手段はないのでしょうか?
マネージ型をグローバルで宣言できませんとコンパイルが通りません。

皆様のお蔭様で質問の内容が絞れてきました。
もう少し、調べてから、質問しなければですね。。。申し訳ありません。

Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2007-04-11 15:50
Form1のメンバ変数にするだけで解決するのでは。
osako
常連さん
会議室デビュー日: 2006/10/31
投稿数: 35
投稿日時: 2007-04-11 16:35
Blueさん

Form1のメンバ変数へForm2^ F2 = gcnew Form2();を追加してみましたが、
このようにエラーになりました。
メンバー変数の宣言のルールがわかりません。

c:\visual studio 2005\projects\testform\testform\Form1.h(28) : error C3845: 'TESTFORM::Form1::F2': ref クラス または値型の内部で、スタティック データ メンバのみ初期化することができます
osako
常連さん
会議室デビュー日: 2006/10/31
投稿数: 35
投稿日時: 2007-04-11 16:36
Blueさん

Form1のメンバ変数へForm2^ F2 = gcnew Form2();を追加してみましたが、
このようにエラーになりました。
メンバー変数の宣言のルールがわかりません。

c:\visual studio 2005\projects\testform\testform\Form1.h(28) : error C3845: 'TESTFORM::Form1::F2': ref クラス または値型の内部で、スタティック データ メンバのみ初期化することができます

スキルアップ/キャリアアップ(JOB@IT)