トップ回答者
2つめのFormのイベントを1つめのFormで処理したいのですが

質問
回答
-
できますが、AddHandler キーワードを使わないといけないかもしれませねんね。
2 つ目の Form 変数の中のコントロール変数の中の Click イベントととか。
(参考サイト:http://dobon.net/vb/dotnet/beginner/eventhandle.html)ただ、あんまりそういうことをやっていると、1 つ目の Form に 2 つ目の Form のコードがたくさん載ることになるので、わかりづらくなります。
本当に必要なものだけ、2 つ目の Form が独自のイベントを発行するようにして、どのボタンがとかを 1 つ目の Form 側で気にしないようにできるとよいとは思いますが…。
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
すべての返信
-
できますが、AddHandler キーワードを使わないといけないかもしれませねんね。
2 つ目の Form 変数の中のコントロール変数の中の Click イベントととか。
(参考サイト:http://dobon.net/vb/dotnet/beginner/eventhandle.html)ただ、あんまりそういうことをやっていると、1 つ目の Form に 2 つ目の Form のコードがたくさん載ることになるので、わかりづらくなります。
本当に必要なものだけ、2 つ目の Form が独自のイベントを発行するようにして、どのボタンがとかを 1 つ目の Form 側で気にしないようにできるとよいとは思いますが…。
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。 -
そのやり方は「循環参照」と呼ばれ、あまり好まれるアプローチではないという点も触れておいた方がよいかと。
もちろん、一人で作って一人で完結するとか、かなりの小規模のプログラムであるとかなら、そのデメリットが効いてくる可能性は低いので、循環参照でとりあえず逃げるのも一手です。私が元に書いていた(前半の)内容も責務の分担としてはよくありません。
このため、必要なものだけ別途イベントを発行するべきだとして苦言を呈していました。チームで開発するとか、ある程度の規模のプログラムを書くとか、将来の保守を考慮するのであれば、循環参照や 2 つ目のフォームを完全にコントロールすること(越権行為といえるか?)は避けた方がよいでしょう。
なぜなら、2 つ目のフォームの挙動を知るのに、1 つ目のフォームのコードまですべて読まないといけません。
イベントで依存関係を一方向に切り離せていれば、コードを読む範囲を広げるリスクを軽減します。(設計や実装によっては、リスクの軽減につながらない可能性も残る)
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。- 編集済み AzuleanMVP, Moderator 2012年1月4日 9:30
- 回答の候補に設定 山本春海 2012年1月11日 7:49
-
こんにちは、norikoshino さん。
MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。
しばらく経ちましたが、その後いかがでしょうか。
みなさんから参考になる情報をいただいているかと思われましたので、勝手ながら私の方で回答としてマークさせていただきました。
情報くださったみなさん、ありがとうございます。
いただいた情報の中で解決に役立った投稿や、参考になる情報など有効な情報には回答としてマークすることをお願いしています。
今後、同じ問題でこのスレッドを参照される方にも、有効な情報を活用いただけるかと思いますので、ご協力よろしくお願いいたしますね。
今後とも、MSDN フォーラムをよろしくお願いいたします。
日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海