- PR -

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

投稿者投稿内容
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2007-04-11 16:56
Form1.h
コード:
private:

Form2^ F2; // 宣言のみ

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

  /*Form2^ */F2 = gcnew Form2();
  F2->Show();
}

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

  /*Form2^ F2 =gcnew Form2(); */

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


とする。
ただし、F2のnullptrチェックは必要かと。

# F2を閉じたとき、(Showメソッドで表示しているので)Disposeが呼ばれる?
# →Form1::F2にはインスタンスが残ったままとなる?
# →nullptrで比較したとき 偽 になる?
# →Dispose済みのコントロールにアクセスしてもOK?
# だめなら、何らかの方法で nullptr を入れないとだめ?

[ メッセージ編集済み 編集者: Blue 編集日時 2007-04-11 16:59 ]
osako
常連さん
会議室デビュー日: 2006/10/31
投稿数: 35
投稿日時: 2007-04-11 17:24
Blueさん

手取り足取ありがとうございました。
宣言と定義を分ければよかったのですね。
うまくいくようになりました。

以下についてはよくわからないのですが。。
とりあえず、Form2へのText入力時はF2!==nullptrの条件をいれて
インスタンス作成されていないときのエラーを回避するようにしました。

# F2を閉じたとき、(Showメソッドで表示しているので)Disposeが呼ばれる?
# →Form1::F2にはインスタンスが残ったままとなる?
# →nullptrで比較したとき 偽 になる?
# →Dispose済みのコントロールにアクセスしてもOK?
# だめなら、何らかの方法で nullptr を入れないとだめ?
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2007-04-11 17:39
引用:

以下についてはよくわからないのですが。。


私もよくわかりません。

実際に、

button1_Click

Form2を閉じる

textBox1_TextChanged

としたときにどうなるか、
またこのようなケースがありうるのか、
あるならどう回避させるべきか

を検討してみてください。
その際はこのスレではなく新しいスレを建てて質問してください。
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2007-04-11 19:13
F2を閉じるときにnullptrを代入するならイベントをつかって、

Form1.h
コード:
System::Void Form2_Closed(System::Object^ sender, System::EventArgs^ e)
{
    this->F2 = nullptr;
}

----Form1のボタンよりForm2を表示させる--- 
System::Void button1_Click(System::object^ sender, System::EventArgs^ e)
{ 
    this->F2 = gcnew Form2(); 
    this->F2->Closed += gcnew EventHandler(this, &Form1::Form2_Closed);
    this->F2->Show(); 
} 


とすればよさそう。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-04-11 19:58
deleteじゃいかんのだっけ?
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2007-04-12 08:36
引用:

ぶさいくろうさんの書き込み (2007-04-11 19:58) より:
deleteじゃいかんのだっけ?

何に対するdeleteでしょうか?

ShowDialogの場合はdeleteをよんで明にDisposeさせますけど、
Showの場合はフォームを閉じればDisposeされると認識しています。

また、deleteしたとしても明にnullptrを代入しないといけないような
気がするのですが、どうなんでしょうか?
osako
常連さん
会議室デビュー日: 2006/10/31
投稿数: 35
投稿日時: 2007-04-12 09:15
引用:

Blueさんの書き込み より:

button1_Click

Form2を閉じる

textBox1_TextChanged

としたときにどうなるか、
またこのようなケースがありうるのか、
あるならどう回避させるべきか



こういう場合、僕の環境では、何も起こりませんでした。
でも、気持ち悪いので・・・

引用:

Blueさんの書き込み より:

F2を閉じるときにnullptrを代入するならイベントをつかって、




のように、nullptrを代入するようにしておきました。

いろいろとありがとうございました。

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