チュートリアル: VSTO アドイン プロジェクトでの単純データ バインディング
VSTO アドイン プロジェクトでは、ホスト コントロールと Windows フォーム コントロールにデータをバインドできます。 このチュートリアルでは、実行時に Microsoft Office Word 文書にコントロールを追加して、そのコントロールをデータにバインドする方法を示します。
適用対象: このトピックの情報は、Word の VSTO アドインのプロジェクトに適用されます。 詳細については、「Office アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。
このチュートリアルでは、次の作業について説明します。
実行時にドキュメントに ContentControl を追加する。
コントロールをデータセットのインスタンスに接続する BindingSource を作成する。
ユーザーがレコードをスクロールしてレコードをコントロールに表示できるようにする。
Note
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio IDE のカスタマイズ」を参照してください。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
Microsoft Office Developer Tools が含まれている Visual Studio のエディション。 詳細については、「Office ソリューションを開発できるようにコンピューターを構成する」を参照してください。
Word 2013 または Word 2010。
AdventureWorksLT
サンプル データベースがアタッチされた SQL Server 2005 または SQL Server 2005 Express の実行中のインスタンスへのアクセス。AdventureWorksLT
データベースは、SQL Server Samples GitHub リポジトリからダウンロードできます。 データベースをアタッチする方法について詳しくは、次のトピックをご覧ください。SQL Server Management Studio または SQL Server Management Studio Express を使用してデータベースをアタッチする場合は、「データベースをアタッチする方法 (SQL Server Management Studio)」を参照してください。
コマンド ラインを使用してデータベースをアタッチする場合は、「データベース ファイルを SQL Server Express にアタッチする方法」を参照してください。
新しいプロジェクトの作成
まず、Word VSTO アドイン プロジェクトを作成します。
新しいプロジェクトを作成するには
Visual Basic または C# を使用して、 Populating Documents from a Databaseという名前の Word VSTO アドイン プロジェクトを作成します。
詳細については、「方法: Visual Studio で Office プロジェクトを作成する」を参照してください。
Visual Studio により、ThisAddIn.vb ファイルまたは ThisAddIn.cs ファイルが開かれ、Populating Documents from a Database プロジェクトがソリューション エクスプローラーに追加されます。
プロジェクトのターゲットが .NET Framework 4 または .NET Framework 4.5 である場合は、Microsoft.Office.Tools.Word.v4.0.Utilities.dll アセンブリへの参照を追加します。 この参照は、このチュートリアルの後半でプログラムを使用して Windows フォーム コントロールをドキュメントに追加するのに必要です。
データ ソースを作成する
[データ ソース] ウィンドウを使用して、型指定されたデータセットをプロジェクトに追加します。
型指定されたデータセットをプロジェクトに追加するには
[データ ソース] ウィンドウが表示されていない場合は、メニュー バーで [表示]>[その他のウィンドウ]>[データ ソース] をクリックして表示します。
[新しいデータ ソースの追加] をクリックして データ ソース構成ウィザードを開始します。
[データベース]をクリックして、 [次へ]をクリックします。
AdventureWorksLT
データベースへの既存の接続がある場合は、その接続を選んで [次へ]をクリックします。それ以外の場合は、 [新しい接続]をクリックし、 [接続の追加] ダイアログ ボックスを使用して新しい接続を作成します。 詳細については、「新しい接続を追加する」を参照してください。
[アプリケーション構成ファイルへの接続文字列を保存] ページで、 [次へ]をクリックします。
[データベース オブジェクトの選択] ページで、 [テーブル] を展開し、 [Customer (SalesLT)]を選びます。
[完了] をクリックします。
AdventureWorksLTDataSet.xsd ファイルがソリューション エクスプローラーに追加されます。 このファイルでは、次の項目を定義します。
AdventureWorksLTDataSet
という名前の型指定されたデータセット。 このデータセットは、AdventureWorksLT データベースの Customer (SalesLT) テーブルの内容を表します。CustomerTableAdapter
という名前の TableAdapter。 この TableAdapter は、AdventureWorksLTDataSet
内のデータの読み取りと書き込みに使用できます。 詳細については、TableAdapter の概要に関するページを参照してください。これらのオブジェクトは、どちらもこのチュートリアルの後半で使用します。
コントロールを作成してデータにバインドする
このチュートリアルでデータベース レコードを表示するために使用するインターフェイスは基本的なもので、ドキュメント内の右側に作成されます。 1 つの ContentControl には一度に 1 つのデータベース レコードが表示されます。2 つの Button コントロールを使用してレコードを前後にスクロールできます。 コンテンツ コントロールは BindingSource を使用して、データベースに接続します。
コントロールをデータにバインドする操作の詳細については、「Office ソリューションでコントロールにデータをバインドする」を参照してください。
ドキュメントでインターフェイスを作成するには
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;
ThisAddIn_Startup
メソッドに次のコードを追加し、データセットを初期化して、そのデータセットにAdventureWorksLTDataSet
データベースから得た情報を設定します。ThisAddIn_Startup
メソッドに次のコードを追加します。 これによりホスト項目が生成され、ドキュメントの機能が拡張されます。 詳細については、「実行時に VSTO アドインの Word 文書と Excel ブックを拡張する」を参照してください。ドキュメントの先頭でいくつかの範囲を定義します。 これらの範囲は、テキストを挿入し、コントロールを配置する場所を指定します。
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;
以前に定義された範囲にインターフェイス コントロールを追加します。
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");
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);
データベース レコード間を移動するには、次のコードを追加します。
アドインをテストする
Word を開くと、コンテンツ コントロールに AdventureWorksLTDataSet
データセットからのデータが表示されます。 [次へ] と [前へ] ボタンをクリックして、データベース レコードをスクロールします。
VSTO アドインをテストするには
F5 キーを押します。
customerContentControl
という名前のコンテンツ コントロールが作成され、データが読み込まれます。 同時に、adventureWorksLTDataSet
という名前のデータセット オブジェクトと、 BindingSource という名前のcustomerBindingSource
がプロジェクトに追加されます。 ContentControl が BindingSourceにバインドされ、さらにこれがデータセット オブジェクトにバインドされます。[次へ] ボタンと [前へ] ボタンをクリックして、データベース レコードをスクロールします。
関連するコンテンツ
- Office ソリューションにおけるデータ
- Office ソリューションでコントロールにデータをバインドする
- 方法: データベースのデータをワークシートに読み込む
- 方法: データベースのデータをドキュメントに読み込む
- 方法: サービスのデータをドキュメントに読み込む
- 方法: オブジェクトのデータをドキュメントに読み込む
- 方法: ワークシート内でデータベースのレコードをスクロールする
- 方法: ホスト コントロールのデータでデータ ソースを更新する
- チュートリアル: ドキュメント レベルのプロジェクトでの単純データ バインディング
- チュートリアル: ドキュメント レベルのプロジェクトでの複合データ バインディング
- Office ソリューションにおけるローカル データベース使用の概要
- 新しいデータ ソースの追加
- Visual Studio でのデータへの Windows フォーム コントロールのバインド
- 方法: オブジェクトのデータをドキュメントに読み込む
- 方法: ホスト コントロールのデータでデータ ソースを更新する
- Office ソリューションにおけるローカル データベース使用の概要
- BindingSource コンポーネントの概要