• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プロジェクト内で共通のDataSetの作成方法)

共通のDataSetの作成方法とは?

このQ&Aのポイント
  • VS2005 C#を学んでいる者です。プロジェクト内で共通に使えるDataSetの作成方法について教えてください。
  • Form1とDataGridView1を作成し、ウィザードでnorthwindDataSet1を作成します。Form2とDataGridView2にはウィザードでnorthwindDataSet2を作成します。しかし、2つのDataSetではなく1つのDataSetを作成したいです。
  • MainMenuにDataSetを貼り付けて、Form1のbindSourceオブジェクトのDataSourceプロパティで参照できるか試しましたができませんでした。他の方法はありますか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#221739
noname#221739
回答No.1

※会社では VB しか使用してませんが、VisualStudio .NET ということならば、まぁ、大体、エッセンスは流用できるだろう、ということで、サジェスチョンの提示です。 App1クラス(=プロジェクト名)の配下に、Form1クラス、Form2クラス、それらを呼び出すMainMenuクラスがある…ということですかね。 オブジェクト指向の考え方では、クラスを越えてアクセスさせるには、Property ってのを経由させる、ってことになってます。 ですので、 Public Property なんとかかんとか() As DataTable  Get   Return Private指定したDataTable変数  End Get  Set (Value As DataTable)   Private指定したDataTable変数 = Value  End Set End Property ってな感じで、プロパティを作れば、Form1クラス、Form2クラス相互からアクセスできますね。 ※各Formクラスからは、App1.Form1.なんとかかんとか() ってのでアクセスする、として。 1つの DataSet 内に、複数の DataTable を入れるというのは、可能と思います。 ※なにせ、DataSet.Tables(0) ってのでアクセスできますから …ただ、個人的にも会社でも、DataSetは、あまり使いませんね。 殆ど、DataTableでどうにもなりますから。 CrystalReportに対して印刷しろ、ってな時くらいかな? DataSetを利用するのは。 ですので、後々の事も考えると…ウィザードを使うのではなく、手打ちで書いてく事をオススメしたいと思います。

tomiyamax
質問者

お礼

stein_JPさん、ご回答ありがとうございました。  まず始めに考えたのが、Form1およびForm2でテーブルを返すメソッドを作成する。  しかし、そのようにすると、テーブルのコピーがメソッドを呼び出した方にも作成されてしまう。 ここで思考がとどまっていました。  プロパティを作れば、コピーされるわけではなく直接アクセスとなるということですね。納得しました。 C#では実際仕事をしたことがないのですが、今後ウィザードを使わなくてもできるようにしていきたいと思います。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A