すべてのカテゴリ » インターネット・パソコン » 技術・プログラミング

質問

終了

Visual Studio 2008 で、C#でプログラム開発をしています。
メインFormAから、サブFormBを作って、オブジェクトをFormBに渡して、そのオブジェクトのプロパティを変更してFormAに返したいのですが、これを実現する方法として、現状の私の妥協案は、FormBにpublicなオブジェクトを作って、それに値をsetして、FormAでそれをコピーするという方法をとっています。
 同じことをするにあたり、publicを使わずに実装する方法はありますでしょうか?FormB内でもらったオブジェクトを直接変更して、そのオブジェクトを返したいです。

  • 質問者:ss
  • 質問日時:2009-02-22 18:06:01
  • 0

並び替え:

(案1)
main関数をモジュールに作成し、起動時にはそのmainからスタートさせます。
そのモジュールに、FormAとFormBと渡したいオブジェクトを宣言し生成します。
FormAとFromBの中に、それぞれ、Publicでオブジェクトを宣言します。(生成はしません。)
さきほどのmain関数のモジュールのFormAとFormBを生成したあとに、渡したいオブジェクトとFormAのオブジェクトとFormBのオブジェクトを=にすれば、渡せるような気がします。
無理だったら、(案2)
main関数をモジュールに作成し、起動時にはそのmainからスタートさせます。
そのモジュールに、FormAとFormBと渡したいオブジェクトを宣言し生成します。
それぞれのフォームでその生成したオブジェクトを使用すればできると思います。

この回答の満足度
  

どの部分をアクセス制限したいのかイマイチ掴みきれないんですが、FormBのパブリック要素を極力減らしたいという意図でしたらFormAでオブジェクトを作ってFormBのコンストラクタ引数で渡してやればFormBは特にパブリックなプロパティやメソッドは必要ないです。

そのオブジェクトのパブリック要素を極力減らしたいという意図でしたら、FormBにリードオンリープロパティを持たせて、ゲット要求時にリードオンリーなオブジェクトを生成して返すという手があります。

  • 回答者:三十路 (質問から2時間後)
  • 0
この回答の満足度
  

関連する質問・相談

Sooda!からのお知らせ

一覧を見る