- - PR -
外部変数の記述について(グローバル変数)
«前のページへ
1|2|3|4|5
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-03-31 15:11
Blueさん
レスありがとうございます。 見てる人に分かりやすくするために、前レスを 使っただけですよ、自分が考えた とか、そうゆうのは、関係ないと思います。 | ||||||||||||
|
投稿日時: 2006-03-31 15:21
いえいえ、とんでもないです。 実は、ken さんがその Form 間の関係をどう捉えているかわかってないんです。 その Form 間が親子のような関係にあるならば、 それは呼び出した時点で値そのものを渡して、値を返したければ、 呼び出した方のフォーム側 "から" 回収すべきでしょうけど、 今回は兄弟のような関係にあると考えていました。 ですが、当初グローバルにしたいという意見もありましたよね? もしそうであれば、それは Form のメンバでない方が望ましいようにも思えます。 例となるソースを書いておいて恐縮なんですが...
これは、Blue さんの投稿 から得たものでしょうか? 試行錯誤はされましたか?
どのようなコードを書けば良いか... ですか。 コードは既に私も Blue さんも書いています。 どこに配置するかは ken さんの構成で考えて欲しいんです。 なので、敢えて「もう書いてます」と言ってきました。 ところで ken さんは今までどのような言語・開発をしてきたんでしょうか? もし、GUI ベースの開発を経験しているのであれば、 構文が違うだけでそのまま生かすことができる部分だと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-03-31 16:21
じゃんぬねっとさん
レスありがとうございます。 >その Form 間が親子のような関係にあるならば、 >それは呼び出した時点で値そのものを渡して、値を返したければ、 >呼び出した方のフォーム側 "から" 回収すべきでしょうけど、 >今回は兄弟のような関係にあると考えていました。 すみません、詳しく説明いたします。 下記のようになっています。 ・メインのダイアログ(一般的なダイアログです、コントロールが色々つけてあります)があります。(Dlg_Aとしておきます。) ・違うダイアログ(一般的なダイアログです、コントロールが色々つけてあります)があります。。(Dlg_Bとしておきます。) Dlg_Aにあるボタンが押されたときに、Dlg_Bを呼び出します。 ■Dlg_A ボタンクリックイベント −−−−−−−−−−−−−−−−−−−−−−−−−− Form ^DlgB = gcnew Dlg_B(); DlgB ->ShowDialog(); −−−−−−−−−−−−−−−−−−−−−−−−−− Dlg_Bダイアログ表示される(モーダル)。。。のような、流れです。 このあと、 Dlg_B:lg_B_Loadの処理があり、 初期化処理に入るようになっています。。 Dlg_Aにある、メンバ変数を参照することよって、 Dlg_Bの表示内容に変化を持たせるようとしています ShowDlgのところで、『this』を渡したとしても、 Dlg_Bの中での『this』は、Dlg_Bをさしています。。 ちなみに、上記のような事を、 親子のような関係というのでしょうか? 引用: ------------------------------------------------ FormB^ f = gcnew FormB; f->ShowDialog( this ); ------------------------------------------------ ↑の場合では、thisを渡していますが、 fダイアログが表示され、その部分でのthisは、fを さすと思いますが、そこの部分で、呼ばれる前のthisを fのダイアログが呼ばれてから、参照するには、どうすればいいのでしょうか? staticを使う事によって、解決は、できるのですが、 出来れば、使わない方法を取りたいと思っています。。 staticが一般的なのでしょうか? MFCなどで、作成していたときは、Dlg_A XX; をして、externを行うような、やり方をしたり していました。。 よろしく御願します。 | ||||||||||||
|
投稿日時: 2006-03-31 16:53
ShowDialog メソッドである以上は兄弟の関係ではないですよね。 呼び出し元が親になり、呼び出し先が子になります。
呼ばれてから参照する必要がないように思います。 最初に渡しておけば良いと思うんですよ。 違うのでしょうか? 確かに、Owner を使って値の参照はできます。 しかし、子から親が何であるかは知ってはいけません。 親が一方的に子が欲しいであろう値を渡します。 その値を回収したい場合は "親から" 回収させます。 子は親から何かを参照したり、親を指定して何かを返すような機構は設けません。 (メソッドの戻り値などは OK ) これはモジュールうんぬんの時代からの原則です。 C++/CLI うんぬんは置いといて、これらを別の言語にたとえられますか? ちなみに static が一般的かどうかは、仕様次第です。 Form のメンバであるならば、static なメンバというのはおかしいと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2006-03-31 17:15
じゃんぬねっとさん、
レスありがとうございます。 とても勉強になりました。 >呼ばれてから参照する必要がないように思います。 >最初に渡しておけば良いと思うんですよ。 >違うのでしょうか? こちらの方法を使って、解決しようと思います。 ありがとうございました。 | ||||||||||||
|
投稿日時: 2006-03-31 17:21
間違ってるような気がします。以下のような意味です。分かっていたらすみません。 this は今、その瞬間に処理しているメソッドのインスタンスです。
_________________ 囚人のジレンマな日々 | ||||||||||||
|
投稿日時: 2006-03-31 17:41
囚人さん
レスありがとうございます。 スレッドのタイトルから、かけ離れ かつ、話題が二転三転してしまい、 すみません。。 引用: ------------------------------------------------ FormB^ f = gcnew FormB; f->ShowDialog( this ); ------------------------------------------------ そうですね、前レスやら、実現しようとしてる事を色々考えながら、 書いていたので・・囚人さんのご指摘の通りだと思います。 引用:------------------------------------------- 呼ばれてから参照する必要がないように思います。 最初に渡しておけば良いと思うんですよ。 違うのでしょうか? ------------------------------------------------ 当初、上記のような方法でなく、子から、親への参照が、 出来るのかなと、思っていまして・・ (変数を増やしたくなかったので) ただ、じゃんぬねっとさんの説明により、 上記の方法が、ベストかなという結論に至りました。。 以上です。ありがとうございました。 | ||||||||||||
|
投稿日時: 2006-03-31 17:56
変数って "増え" ますか? まあ、Owner プロパティを使えば増えはしませんけど... 考えて欲しいのは変数の数ではなく、関係と方向です。 呼び出し元 -> 呼び出し先 呼び出し元 -> 値 -> 呼び出し先 値は常にこの流れになるべきであり、結果を取得する場合も呼び出し元 "から"、 呼び出し先の公開された読み取り専用のインスタンス メンバを参照します。 メソッドの呼び出しで戻り値として返すのがベスト ウェイだと思います。 とにかく、「呼び出し先は呼び出し元の都合を考えてはならない」で良いです。 ken さん、長々とすいませんでしたね。 囚人さん、ちゃんと読んでますね。(^^) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
«前のページへ
1|2|3|4|5