- - PR -
Form1より表示されたForm2に表示されているテキストの変更方法
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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のテキストは変更されません。 どのように書けばよいのでしょうか? どなたか、漠然とした情報の少ない質問で申し訳ないのですが、 よろしくお願いします。 | ||||||||||||
|
投稿日時: 2007-04-11 14:50
osakoさんが質問されるたびにいつも思うのですが「VC++/NETに関して 調べた」という、その調べた部分を示した方が良いかと思います。 どこまでができていて、なにができていないのか。それを他人にはっきりと 示すことがまずは大事だと思います。 極論ですが、それができるまでは質問しない方が良いこともあります。 曖昧なまま質問されても、混乱の元になるだけですし。
ここで作成した「Form2^ F」と
ここの「Form2^ F2」のインスタンスが別物である、という認識はあります か? というか別物ではあるのですが、なぜ別物なのかはわかりますか? _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||||||
|
投稿日時: 2007-04-11 14:51
VC++は一度も勉強した事ないから的外れだったらすいません。 textBox1_TextChangedってtextBox1が編集された時に呼ばれるメソッドでは? Form2のインスタンスを作成した段階でインスタンスの配下のtextBox1のvalueを変えるんじゃないの? | ||||||||||||
|
投稿日時: 2007-04-11 15:16
は
とするとどなうるのかやってみると視覚的にわかりやすいかと。 このあたりの変数の概念は.NET云々はまったく関係ないですね。 C言語の基礎中の基礎でしょうか。 | ||||||||||||
|
投稿日時: 2007-04-11 15:45
ぽぴ王子さんありがとうございます。
ご指摘のところ分かっていませんでした。別物だから、うまくいかないのですね。 さるさん、Blueさん分かりやすい解説ありがとうございます。 確かに、同じインスタンスにすれば、Form1に入れた内容がForm2に表示されます。 理解できました。 このインスタンスの定義(定義って言葉であっているのでしょうか?)をForm1.h内などでグローバルで定義する手段はないのでしょうか? マネージ型をグローバルで宣言できませんとコンパイルが通りません。 皆様のお蔭様で質問の内容が絞れてきました。 もう少し、調べてから、質問しなければですね。。。申し訳ありません。 | ||||||||||||
|
投稿日時: 2007-04-11 15:50
Form1のメンバ変数にするだけで解決するのでは。
| ||||||||||||
|
投稿日時: 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 クラス または値型の内部で、スタティック データ メンバのみ初期化することができます | ||||||||||||
|
投稿日時: 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 クラス または値型の内部で、スタティック データ メンバのみ初期化することができます |