C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 親フォームの変数を別フォームで使用


(過去ログ 20 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■8589 / inTopicNo.1)  親フォームの変数を別フォームで使用
  
□投稿者/ asuka (25回)-(2007/10/03(Wed) 15:55:04)

分類:[C#] 

親フォームの変数を別フォームで使用したいのですが、どうやるのでしょうか?

コントロールの場合の例はあるのですが、変数を直接参照することは出来ないのでしょうか?



フォームAが起動時に設定ファイルを読み取り、

public string m_strINIFileValie1;
public string m_strINIFileValie2;
public string m_strINIFileValie3;

にその内容をセットします。

フォームAから呼ばれたフォームBが、フォームAの上記の3つの値を参照してフォームBにあるリストビューへ反映したいのですが、

やり方がわかりません。



フォームAとフォームBのネームスペースは同じなのですが、
(namespace Test)

フォームB内で、

Test t;

t = (Test)(this.Parent);

とし、

t.strINIFileValie1

をメッセージボックスで表示すると例外が発生してしまいます。




上手くいく方法はありますでしょうか?


引用返信 編集キー/
■8592 / inTopicNo.2)  Re[1]: 親フォームの変数を別フォームで使用
□投稿者/ 未記入 (124回)-(2007/10/03(Wed) 16:27:52)
No8589 (asuka さん) に返信
> 親フォームの変数を別フォームで使用したいのですが、どうやるのでしょうか?
>
> コントロールの場合の例はあるのですが、変数を直接参照することは出来ないのでしょうか?
>
>
>
> フォームAが起動時に設定ファイルを読み取り、
>
> public string m_strINIFileValie1;
> public string m_strINIFileValie2;
> public string m_strINIFileValie3;
>
> にその内容をセットします。
>
> フォームAから呼ばれたフォームBが、フォームAの上記の3つの値を参照してフォームBにあるリストビューへ反映したいのですが、
>
> やり方がわかりません。
>
>
>
> フォームAとフォームBのネームスペースは同じなのですが、
> (namespace Test)
>
> フォームB内で、
>
> Test t;
>
> t = (Test)(this.Parent);
>
> とし、
>
> t.strINIFileValie1
>
> をメッセージボックスで表示すると例外が発生してしまいます。
>
>
>
>
> 上手くいく方法はありますでしょうか?

コントロールだろうと変数だろうと変数は変数だから何の違いもないのですが、アクセス修飾子についてどの程度理解しているのでしょうか?
さらにいえば、親フォームへ直接参照することはしません。だって「親」だから。
引用返信 編集キー/
■8594 / inTopicNo.3)  Re[2]: 親フォームの変数を別フォームで使用
□投稿者/ asuka (26回)-(2007/10/03(Wed) 17:49:40)
> コントロールだろうと変数だろうと変数は変数だから何の違いもないのですが、アクセス修飾子についてどの程度理解しているのでしょうか?
> さらにいえば、親フォームへ直接参照することはしません。だって「親」だから。

全く自身はないのですが、コントロールの場合はpublicにしていれば、

親フォームを生成してコントロールのプロパティにテキストなんかを設定出来るのかな?

なんて思ったのですが、

同じようにして親のメンバ変数も見れるのですが、実際にメッセージボックスなどで表示すると例外が発生してしまうので、

親、子が参照出来るように中間になるようなクラスに共通で参照するメソッドを追加して実装すればよいのでしょうか!?

どんな作りが良いのかいまいちよく理解出来てません。

すいません、、、

引用返信 編集キー/
■8597 / inTopicNo.4)  Re[3]: 親フォームの変数を別フォームで使用
□投稿者/ 特攻隊長まるるう (84回)-(2007/10/03(Wed) 18:39:54)
2007/10/03(Wed) 18:53:18 編集(投稿者)

No8594 (asuka さん) に返信
とりあえず、
>例外が発生してしまうので
例外は星の数ほどありますので、具体的なエラー番号や、正確なエラーメッセージを
記述しない限り、なんの役にも立たない情報となってしまいます。
具体的な内容を省略せずに書くようにしてください。
よくある
『オブジェクト参照がオブジェクト インスタンスに設定されていません』
だと、インスタンスの管理が意識できてないのでは?
# 同じハンドルの人が過去ログの6639で同じようなこと言ってますが。。。

で、
>コントロールの場合はpublicにしていれば、
で、できてしまうんですが、処理が複雑になってきたとき、お互いに参照してたり、
実は参照元を辿っていくと自分に戻ってきたり(循環参照)、プログラムの構造を
図式化すると網の目になってたり。。。てことになります。

分かり難くなるのでやめましょう。

基本的な考え方として、処理の方向は1方向です。
 親→子
となります。この形でも、ほとんどのプログラムは作成できます。
最終的に図式化すると、木(Tree)構造になるのが分かり易いでしょう。

例えば、フォームの上のテキストボックスを考えてください。
フォームが親で、テキストボックスが子です。子が必要な情報は、プロパティや
メソッドで親(フォーム)が設定しますよね?テキストボックスがフォームを
操作する必要は、まず、ありません。

これがフォームBに変わっただけです。プロパティやメソッド、イベントは
自作できますよね?

>フォームAから呼ばれたフォームBが、フォームAの上記の3つの値を参照して
>フォームBにあるリストビューへ反映したいのですが
・プロパティを3つ用意して親がそれぞれ設定してやるとか
・引数を3つ持つメソッドを用意して親がそれを実行するとか

# 引数の数が多くなってきたら、引数用のクラスを作成してまとめてやるとか、
# 簡単なものなら配列やコレクションで事足りますよね?
引用返信 編集キー/
■8635 / inTopicNo.5)  Re[4]: 親フォームの変数を別フォームで使用
□投稿者/ asuka (27回)-(2007/10/04(Thu) 14:07:16)

丁重な解説ありがとうございます。

> >フォームAから呼ばれたフォームBが、フォームAの上記の3つの値を参照して
> >フォームBにあるリストビューへ反映したいのですが
> ・プロパティを3つ用意して親がそれぞれ設定してやるとか
> ・引数を3つ持つメソッドを用意して親がそれを実行するとか
>
> # 引数の数が多くなってきたら、引数用のクラスを作成してまとめてやるとか、
> # 簡単なものなら配列やコレクションで事足りますよね?

実は設定ファイルの項目を親フォームとその他のフォームで使用したかったので、

このような質問をさせて頂きました。



実際の設定項目は50項目ほどあり、これらのために50個の引数または、プロパティを設けるのは・・・

と思っておりました。

とりあえずはプロパティを設けることで上手くいきました。

ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -