- PR -

Form1からForm2への参照

1
投稿者投稿内容
Sak-Tak
会議室デビュー日: 2007/06/07
投稿数: 13
投稿日時: 2007-06-11 14:21
とても初歩的な質問だとは思うのですが、分からないので教えて下さい。
Form1のボタンが押されるとForm2へデータを渡す場合、以下の2行が何を意味しているのかが分かりません。素人質問ですがよろしくお願い致します。

[Form1のボタンクリック時]
Form2 fm =new Form2(); 
fm.frmMain=this;   ←これ
fm.show();

[Form2のロード時]
public Form1 frmMain; ←これ
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-06-11 15:21
ピンポイントに何を説明すべきかわかりませんでしたので、何だか説明が冗長になってしまいました。

引用:

Sak-Takさんの書き込み (2007-06-11 14:21) より:

以下の2行が何を意味しているのかが分かりません。

引用:

Form2 fm =new Form2(); 
fm.frmMain=this;   ←これ


fm は Form2 のインスタンスです。fm.frmMain はそのインスタンスの中に含まれるメンバ。つまり Form2 内にある frmMain というメンバになります。

引用:

public Form1 frmMain; ←これ


つまり、上記のフィールドのことです。

何をしているかというと、Form2 をインスタンス化して表示する前に、Form1 のインスタンス (this は Form1 のインスタンス) を Form2 の frmMain という公開されたフィールドに渡しています。

このような実装が必要となっている背景には、どの Form から表示したのかを Form2 で判断したいということに尽きます。Form1 にあるデータを Form2 で取得したい。Form2 で入力したデータを Form1 にセットしたい。などです。

思いっきり Form2 が Form1 を意識しており、いわゆる依存関係が強すぎます。個人的には良い実装とは言いがたいですね。おまけに公開フィールド...。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Sak-Tak
会議室デビュー日: 2007/06/07
投稿数: 13
投稿日時: 2007-06-11 16:57
じゃんぬねっとさん。
親切な解説ありがとうございます。

thisという単語に悩まされていたような気がします。
thistってそのクラスを意味してるんですね。

まだまだがんばらなくては・・・
ありがとうございました。

1

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