親テーブルと子テーブルを DataSet 上で連携し、作業ウィンドウとシートの表示を連動させる方法 C# 版

Tech-ED 2008 ですが、私が担当予定のセッション ”Visual Studio 2008 を使った Office 開発の道標” が、な、な、なんと、聞きたいセッションの第2位らしいです。(41セッション中。汗)

私の師匠である奥主さんに教えていただきました。

もちろん、Tech-ED の神であるジニアス平井さんが1位なのですが、Tech-ED 初体験でしかも、むム無名の私が2位なんて、、、

本当に本当にすみません。

しかも、1位だと、だいたい3千人部屋(そんなのあんのか?)らしいのですが、2位では、千人部屋(うっそーん)らしいです。

師匠の奥主さんを差し置き、私の VSTO の神である松崎さんこだかさん には本当に申し訳ないです。

これで失敗した暁(表現正しいですかね。これ。)には、かなり、えらい目に合わされます。。。

失敗は許されません。がんばります!

で、本題なのですが、前回、ご紹介したネタの C# 版をご紹介いたします。

ユーザーコントロール系のデザインの手順は一緒です。コードのみ編集していただければと思います。

まず、ユーザーコントロール上のコードは以下です。

public partial class OrderData : UserControl
   {

       public BindingSource connector
       {
           get
           {
               return this.受注BindingSource;
           }

       }

       public OrderData()
       {
           InitializeComponent();
       }

       private void 受注BindingNavigatorSaveItem_Click(object sender, EventArgs e)
       {
           this.Validate();
           this.受注BindingSource.EndEdit();
           this.tableAdapterManager.UpdateAll(this.northwindDataSet);

       }

       private void OrderData_Load(object sender, EventArgs e)
       {
           受注TableAdapter.Fill(northwindDataSet.受注);
           受注明細TableAdapter1.Fill(northwindDataSet.受注明細);
       }
   }

次に ThisWorkBook.cs は以下になります。

public partial class ThisWorkbook
   {
       private OrderData uc = new OrderData();
       private void ThisWorkbook_Startup(object sender, System.EventArgs e)
       {
           Globals.ThisWorkbook.ActionsPane.Controls.Add(uc);
           Globals.Sheet1.list1.AutoSetDataBoundColumnHeaders = true;
           Globals.Sheet1.list1.SetDataBinding(uc.connector, "受注受注明細");    
       }

   }

動き的には前回、ご紹介した内容と一緒です。

ただ、やはり、VBA に似ているオブジェクトモデルである VB.NET を利用したコーディングのほうがしやすいかなと思います。

一応、サンプルもつけておきますので、ご確認ください。

SimpleDBAccess2_C.zip