次の方法で共有


チュートリアル: VSTO アドイン プロジェクトでの単純データ バインディング

VSTO アドイン プロジェクトでは、ホスト コントロールと Windows フォーム コントロールにデータをバインドできます。 このチュートリアルでは、実行時に Microsoft Office Word 文書にコントロールを追加して、そのコントロールをデータにバインドする方法を示します。

適用対象: このトピックの情報は、Word の VSTO アドインのプロジェクトに適用されます。 詳細については、「Office アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

このチュートリアルでは、次の作業について説明します。

  • 実行時にドキュメントに ContentControl を追加する。

  • コントロールをデータセットのインスタンスに接続する BindingSource を作成する。

  • ユーザーがレコードをスクロールしてレコードをコントロールに表示できるようにする。

Note

次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio IDE のカスタマイズ」を参照してください。

必須コンポーネント

このチュートリアルを実行するには、次のコンポーネントが必要です。

新しいプロジェクトの作成

まず、Word VSTO アドイン プロジェクトを作成します。

新しいプロジェクトを作成するには

  1. Visual Basic または C# を使用して、 Populating Documents from a Databaseという名前の Word VSTO アドイン プロジェクトを作成します。

    詳細については、「方法: Visual Studio で Office プロジェクトを作成する」を参照してください。

    Visual Studio により、ThisAddIn.vb ファイルまたは ThisAddIn.cs ファイルが開かれ、Populating Documents from a Database プロジェクトがソリューション エクスプローラーに追加されます。

  2. プロジェクトのターゲットが .NET Framework 4 または .NET Framework 4.5 である場合は、Microsoft.Office.Tools.Word.v4.0.Utilities.dll アセンブリへの参照を追加します。 この参照は、このチュートリアルの後半でプログラムを使用して Windows フォーム コントロールをドキュメントに追加するのに必要です。

データ ソースを作成する

[データ ソース] ウィンドウを使用して、型指定されたデータセットをプロジェクトに追加します。

型指定されたデータセットをプロジェクトに追加するには

  1. [データ ソース] ウィンドウが表示されていない場合は、メニュー バーで [表示]>[その他のウィンドウ]>[データ ソース] をクリックして表示します。

  2. [新しいデータ ソースの追加] をクリックして データ ソース構成ウィザードを開始します。

  3. [データベース]をクリックして、 [次へ]をクリックします。

  4. AdventureWorksLT データベースへの既存の接続がある場合は、その接続を選んで [次へ]をクリックします。

    それ以外の場合は、 [新しい接続]をクリックし、 [接続の追加] ダイアログ ボックスを使用して新しい接続を作成します。 詳細については、「新しい接続を追加する」を参照してください。

  5. [アプリケーション構成ファイルへの接続文字列を保存] ページで、 [次へ]をクリックします。

  6. [データベース オブジェクトの選択] ページで、 [テーブル] を展開し、 [Customer (SalesLT)]を選びます。

  7. [完了] をクリックします。

    AdventureWorksLTDataSet.xsd ファイルがソリューション エクスプローラーに追加されます。 このファイルでは、次の項目を定義します。

    • AdventureWorksLTDataSetという名前の型指定されたデータセット。 このデータセットは、AdventureWorksLT データベースの Customer (SalesLT) テーブルの内容を表します。

    • CustomerTableAdapter という名前の TableAdapter。 この TableAdapter は、AdventureWorksLTDataSet 内のデータの読み取りと書き込みに使用できます。 詳細については、TableAdapter の概要に関するページを参照してください。

      これらのオブジェクトは、どちらもこのチュートリアルの後半で使用します。

コントロールを作成してデータにバインドする

このチュートリアルでデータベース レコードを表示するために使用するインターフェイスは基本的なもので、ドキュメント内の右側に作成されます。 1 つの ContentControl には一度に 1 つのデータベース レコードが表示されます。2 つの Button コントロールを使用してレコードを前後にスクロールできます。 コンテンツ コントロールは BindingSource を使用して、データベースに接続します。

コントロールをデータにバインドする操作の詳細については、「Office ソリューションでコントロールにデータをバインドする」を参照してください。

ドキュメントでインターフェイスを作成するには

  1. ThisAddIn クラスで、次のコントロールを宣言し、 Customer データベースの AdventureWorksLTDataSet テーブルをスクロールして表示できるようにします。

    private AdventureWorksLTDataSet adventureWorksDataSet;
    private AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter customerTableAdapter;
    private System.Windows.Forms.BindingSource customerBindingSource;
    private Microsoft.Office.Tools.Word.RichTextContentControl customerContentControl;
    private Microsoft.Office.Tools.Word.Controls.Button button1;
    private Microsoft.Office.Tools.Word.Controls.Button button2;
    
  2. ThisAddIn_Startup メソッドに次のコードを追加し、データセットを初期化して、そのデータセットに AdventureWorksLTDataSet データベースから得た情報を設定します。

    this.adventureWorksDataSet = new AdventureWorksLTDataSet();
    this.customerTableAdapter = new AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter();
    this.customerTableAdapter.Fill(this.adventureWorksDataSet.Customer);
    this.customerBindingSource = new System.Windows.Forms.BindingSource();
    
  3. ThisAddIn_Startup メソッドに次のコードを追加します。 これによりホスト項目が生成され、ドキュメントの機能が拡張されます。 詳細については、「実行時に VSTO アドインの Word 文書と Excel ブックを拡張する」を参照してください。

    Word.Document currentDocument = this.Application.ActiveDocument;
    
    Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
  4. ドキュメントの先頭でいくつかの範囲を定義します。 これらの範囲は、テキストを挿入し、コントロールを配置する場所を指定します。

    extendedDocument.Paragraphs[1].Range.InsertParagraphBefore();
    extendedDocument.Paragraphs[1].Range.InsertParagraphBefore();
    extendedDocument.Paragraphs[1].Range.Text = 
        "The companies listed in the AdventureWorksLT database:   \n";
    extendedDocument.Paragraphs[2].Range.Text = "  "; 
    
    Word.Range range1 = extendedDocument.Paragraphs[2].Range.Characters.First;
    Word.Range range2 = extendedDocument.Paragraphs[2].Range.Characters.Last;
    Word.Range range3 = extendedDocument.Paragraphs[1].Range.Characters.Last;
    
  5. 以前に定義された範囲にインターフェイス コントロールを追加します。

    this.button1 = extendedDocument.Controls.AddButton(range1, 60, 15, "1");
    this.button1.Text = "Previous";
    this.button2 = extendedDocument.Controls.AddButton(range2, 60, 15, "2");
    this.button2.Text = "Next";
    
    this.customerContentControl = extendedDocument.Controls.AddRichTextContentControl(
        range3, "richTextContentControl1");
    
  6. AdventureWorksLTDataSet を使用してコンテンツ コントロールを BindingSourceにバインドします。 C# 開発者の場合、2 つのイベント ハンドラーを Button コントロールに追加します。

    this.customerBindingSource.DataSource = this.adventureWorksDataSet.Customer;
    this.customerContentControl.DataBindings.Add("Text", this.customerBindingSource, 
        "CompanyName", true, this.customerContentControl.DataBindings.DefaultDataSourceUpdateMode);
    
    this.button1.Click += new EventHandler(button1_Click);
    this.button2.Click += new EventHandler(button2_Click);
    
  7. データベース レコード間を移動するには、次のコードを追加します。

    void button1_Click(object sender, EventArgs e)
    {
        this.customerBindingSource.MovePrevious();
    }
    
    void button2_Click(object sender, EventArgs e)
    {
        this.customerBindingSource.MoveNext();
    }
    

アドインをテストする

Word を開くと、コンテンツ コントロールに AdventureWorksLTDataSet データセットからのデータが表示されます。 [次へ][前へ] ボタンをクリックして、データベース レコードをスクロールします。

VSTO アドインをテストするには

  1. F5 キーを押します。

    customerContentControl という名前のコンテンツ コントロールが作成され、データが読み込まれます。 同時に、 adventureWorksLTDataSet という名前のデータセット オブジェクトと、 BindingSource という名前の customerBindingSource がプロジェクトに追加されます。 ContentControlBindingSourceにバインドされ、さらにこれがデータセット オブジェクトにバインドされます。

  2. [次へ] ボタンと [前へ] ボタンをクリックして、データベース レコードをスクロールします。