Microsoft Office InfoPath 2003 を使用してマネージ コード言語 (Visual Basic または C#) でビジネス ロジックを作成する場合は、Microsoft Visual Studio .NET 2003 と Microsoft Office InfoPath 2003 Toolkit for Visual Studio .NET か、または Visual Studio 2005 Tools for the Microsoft Office System と Microsoft Office InfoPath 2003 Toolkit for Visual Studio 2005 で作成された InfoPath プロジェクトを使用します。この両方のマネージ コード開発環境は、Microsoft.Office.Interop.InfoPath.SemiTrust アセンブリによって提供される COM Interop マネージ コード オブジェクト モデルに依存し、それだけをサポートしています。
Microsoft Office InfoPath 2007 の場合は、Visual Basic または C# でビジネス ロジックを書くことができます。これを実行するには、フォーム テンプレートをデザイン モードで開き、いずれかのユーザー インターフェイス コマンドを使用してイベント ハンドラを追加します。これにより、コードを書くための Microsoft Visual Studio Tools for Applications (VSTA) 開発環境が開きます。既定では、VSTA を使用して作成したフォーム テンプレート プロジェクトは、Microsoft.Office.InfoPath アセンブリによって提供される新しいマネージ コード オブジェクト モデルに対して動作します。
または、Visual Studio 2005 に Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System または Visual Studio 2008 と Visual Studio Tools for Office がインストールされている場合は、Visual Studio から開始し、InfoPath フォーム テンプレート プロジェクトを作成し、InfoPath デザイン モードを使用することで、フォームのデザインとビジネス ロジックの追加をすべて Visual Studio 環境で実行できます。
最初のチュートリアルでは、VSTA および Visual Studio 開発環境で C# または Visual Basic を使用して、単純な Hello World アプリケーションを作成する方法を示します。チュートリアルの最後には、System.Environment.UserName を正しく使用して現在のユーザー名を取得し、[テキスト ボックス] コントロールにその値を入力する方法を示すコード サンプルがあります。
必要条件
VSTA 開発環境を使用してこのチュートリアルを完了するには、以下が必要です。
- Microsoft Visual Studio Tools for Applications (VSTA) がインストールされた Microsoft Office InfoPath 2007。
Visual Studio 開発環境に統合された InfoPath デザイン モードを使用してこのチュートリアルを完了するには、以下が必要です。
Microsoft Office InfoPath 2007
Microsoft Visual Studio 2005 と Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System または Visual Studio 2008 と Visual Studio Tools for Office
![]() |
---|
Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System のダウンロードとインストールについては、「InfoPath 開発者ポータル」を参照してください。 |
VSTA での Hello World
以下のチュートリアルでは、ButtonEvent クラスの Clicked イベントのイベント ハンドラを書くことによって、[ボタン] コントロールに関連付けられた単純な警告ダイアログ ボックスを表示する方法を学びます。この手順では、Microsoft Visual Studio Tools for Applications (VSTA) 開発環境を使用していることを前提としています。
新しいプロジェクトを作成してプログラミング言語 (Visual Studio Tools for Applications) を指定する
InfoPath を起動します。
[フォームの入力] ダイアログ ボックスで、[フォームのデザイン] の [フォーム テンプレートのデザイン] をクリックします。
メモ :
InfoPath が既に実行されている場合に [フォーム テンプレートのデザイン] ダイアログ ボックスを表示するには、[ファイル] メニューの [フォーム テンプレートのデザイン] をクリックします。
[フォーム テンプレートのデザイン] ダイアログ ボックス内で [フォーム テンプレート] をクリックし、[空白] をクリックして、[ブラウザ互換の機能のみを有効にする] チェック ボックスをオフにして、[OK] をクリックします。
[ツール] メニューの [フォームのオプション] をクリックします。
[カテゴリ] リストの [プログラミング] をクリックし、[フォーム テンプレートのコード言語] ドロップダウン リストから [Visual Basic] または [C#] を選択して [OK] をクリックします。
これで、[ボタン] コントロールを追加して、イベント ハンドラを作成できます。
ボタン コントロールとイベント ハンドラを追加する
[デザイン タスク] 作業ウィンドウの [コントロール] をクリックします。
[ボタン] コントロールをフォーム上にドラッグします。
[ボタン] コントロールをダブルクリックして "ラベル" プロパティに「Hello」と入力し、[フォームのコードを編集] をクリックします。プロンプトが表示されたら、フォームに HelloWorld という名前を付けて保存します。
これにより、[ボタン] コントロールの Clicked イベントのイベント ハンドラにカーソルが置かれた状態で [Visual Studio Tools for Applications] 環境が開きます。
これでボタンのイベント ハンドラにフォーム コードを追加する準備ができました。
イベント ハンドラに "Hello World" コードを追加してフォームをプレビューする
イベント ハンドラ スケルトンに次のように入力します。
MessageBox.Show("Hello World!");
MessageBox.Show("Hello World!")
フォーム テンプレートのコードは次のようになります。
using Microsoft.Office.InfoPath; using System; using System.Windows.Forms; using System.Xml; using System.Xml.XPath; namespace HelloWorld { public partial class FormCode { public void InternalStartup() { ((ButtonEvent)EventManager.ControlEvents["CTRL1_5"]).Clicked += new ClickedEventHandler(CTRL1_5_Clicked); } public void CTRL1_5_Clicked(object sender, ClickedEventArgs e) { MessageBox.Show("Hello World!"); } } }
Imports Microsoft.Office.InfoPath Imports System Imports System.Windows.Forms Imports System.Xml Imports System.Xml.XPath Namespace HelloWorld Public Class FormCode Private Sub InternalStartup(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Startup AddHandler DirectCast(EventManager.ControlEvents("CTRL1_5"), ButtonEvent).Clicked, AddressOf CTRL1_5_Clicked End Sub Public Sub CTRL1_5_Clicked(ByVal sender As Object, ByVal e As ClickedEventArgs) MessageBox.Show("Hello World!") End Sub End Class End Namespace
InfoPath デザイン モード ウィンドウに切り替えます。
[基本コントロール] ツール バーの [プレビュー] ボタンをクリックします。
[Hello] ボタンをクリックします。
"Hello World!" という内容のメッセージ ボックスが表示されます。
次の手順は、フォーム コードにデバッグ用のブレークポイントを追加する方法を示しています。
フォーム コードをデバッグする
VSTA ウィンドウに戻ります。
行の左にあるグレーのバーをクリックします。
MessageBox.Show("Hello World!");
MessageBox.Show("Hello World!")
赤い円が表示され、コード行が強調表示されます。これは、ランタイムがフォーム コードのこのブレークポイントで一時停止することを表しています。
[デバッグ] メニューの [デバッグ開始] をクリックします (または F5 キーを押します)。
InfoPath の [プレビュー] ウィンドウで [Hello] ボタンをクリックします。
VSTA コード エディタにフォーカスが移り、ブレークポイント行が強調表示されます。
[デバッグ] メニューで [ステップ オーバー] をクリックするか、または F10 キーを押して、コード内を順に移動します。
イベント ハンドラ コードが実行され、"Hello World!" メッセージが表示されます。
[OK] をクリックして VSTA コード エディタに戻り、[デバッグ] メニューの [デバッグの停止] をクリックするか、または Ctrl + Alt + Break を押します。
Visual Studio に統合された InfoPath デザイン モードでの Hello World
以下の手順では、同じ Hello World コードを、Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System または Visual Studio 2008 と Visual Studio Tools for Office をインストールすることによって、Visual Studio 2005 に統合された InfoPath デザイン モードを有効にして作成する方法を示します。
新しいプロジェクトを作成してプログラミング言語 (Visual Studio) を指定する
Visual Studio を起動します。
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[プロジェクト] の種類で [Visual C#] フォルダを展開し、[Office] をクリックして (Visual Studio 2008 ではさらに [2007] をクリックします)[InfoPath フォーム テンプレート] をクリックします。
または、[他の言語] フォルダを展開して [Visual Basic] フォルダを展開し、[Office] をクリックして (Visual Studio 2008 ではさらに [2007] をクリックします)[InfoPath フォーム テンプレート] をクリックします。
プロジェクトの名前を HelloWorld にして、[OK] をクリックします。
[フォーム テンプレートのデザイン] ダイアログ ボックス内で [フォーム テンプレート] をクリックし、[空白] をクリックして、[OK] をクリックします。
[manifest.xsf [Design]] というタブに、統合された InfoPath フォーム テンプレート デザイン ウィンドウが表示されます。
これで、[ボタン] コントロールを追加して、イベント ハンドラを作成できます。
ボタン コントロールとイベント ハンドラを追加する
- [デザイン タスク] 作業ウィンドウの [コントロール] をクリックします。
![]() |
---|
[デザイン タスク] 作業ウィンドウが表示されていない場合は、[表示] メニューの [デザイン タスク] をクリックします。 |
[ボタン] コントロールを [ツールボックス] からフォーム上にドラッグします。
[ボタン] コントロールをダブルクリックして "ラベル" プロパティに「Hello」と入力し、[フォームのコードを編集] をクリックします。プロンプトが表示されたら、フォームを保存します。
これにより、[ボタン] コントロールの Clicked イベントのイベント ハンドラにカーソルが置かれた状態でコード エディタ ウィンドウが開きます。
これでボタンのイベント ハンドラにフォーム コードを追加する準備ができました。
イベント ハンドラに "Hello World" コードを追加してフォームをプレビューする
イベント ハンドラ スケルトンに次のように入力します。
MessageBox.Show("Hello World!");
MessageBox.Show("Hello World!")
フォーム テンプレートのコードは次のようになります。
using Microsoft.Office.InfoPath; using System; using System.Windows.Forms; using System.Xml; using System.Xml.XPath; namespace HelloWorld { public partial class FormCode { public void InternalStartup() { ((ButtonEvent)EventManager.ControlEvents["CTRL1_5"]).Clicked += new ClickedEventHandler(CTRL1_5_Clicked); } public void CTRL1_5_Clicked(object sender, ClickedEventArgs e) { MessageBox.Show("Hello World!"); } } }
Imports Microsoft.Office.InfoPath Imports System Imports System.Windows.Forms Imports System.Xml Imports System.Xml.XPath Namespace HelloWorld Public Class FormCode Private Sub InternalStartup(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Startup AddHandler DirectCast(EventManager.ControlEvents("CTRL1_5"), ButtonEvent).Clicked, AddressOf CTRL1_5_Clicked End Sub Public Sub CTRL1_5_Clicked(ByVal sender As Object, ByVal e As ClickedEventArgs) MessageBox.Show("Hello World!") End Sub End Class End Namespace
[デバッグ] メニューの [デバッグ開始] をクリックします (または F5 キーを押します)。
InfoPath の [プレビュー] ウィンドウが表示されます。
[Hello] ボタンをクリックします。
"Hello World!" という内容のメッセージ ボックスが表示されます。
[OK] をクリックし、[基本コントロール] ツール バーの [プレビューを閉じる] ボタンをクリックして、Visual Studio に戻ります。
次の手順は、フォーム コードにデバッグ用のブレークポイントを追加する方法を示しています。
フォーム コードをデバッグする
[FormCode.cs] タブまたは [FormCode.vb] タブをクリックして、コード エディタに戻ります。
行の左にあるグレーのバーをクリックします。
MessageBox.Show("Hello World!");
MessageBox.Show("Hello World!")
赤い円が表示され、コード行が強調表示されます。これは、ランタイムがフォーム コードのこのブレークポイントで一時停止することを表しています。
[デバッグ] メニューの [デバッグ開始] をクリックします (または F5 キーを押します)。
InfoPath の [プレビュー] ウィンドウで [Hello] ボタンをクリックします。
コード エディタにフォーカスが移り、ブレークポイント行が強調表示されます。
[デバッグ] メニューで [ステップ オーバー] をクリックするか、または F10 キーを押して、コード内を順に移動します。
イベント ハンドラ コードが実行され、"Hello World!" メッセージが表示されます。
[OK] をクリックしてコード エディタに戻り、[デバッグ] メニューの [デバッグの停止] をクリックするか、または Ctrl + Alt + Break を押します。
現在のユーザーの名前を取得する
.NET Framework クラスを使用することで、スクリプトで書いたビジネス ロジックで作業する際には使用が困難な、追加の機能にアクセスすることができます。次の例では、Environment クラスの UserName プロパティを使用して現在のユーザーの名前を取得し、Loading イベントのイベント ハンドラを使用して、[テキスト ボックス] コントロールの値を挿入する方法を学びます。
[テキスト ボックス] コントロールに値を挿入するには、XPathNavigator クラスの 2 つのインスタンスを使用します。
最初のインスタンスは、XmlForm クラスの MainDataSource プロパティを使用して、フォームの基盤となる XML ドキュメントを表現する DataSource クラスのインスタンスを取得します。この DataSource クラスのインスタンスは、CreateNavigator メソッドを使用して、XPathNavigator を XML ドキュメントのルート ノードに置きます。
XPathNavigator の 2 番目のインスタンスは、最初のインスタンスを使用して XML ドキュメントの employee フィールドに置かれ、その後 XPathNavigator クラスの SetValue メソッドによって、フィールドの値が UserName プロパティで設定されます。
マネージ コード フォーム テンプレートでの System.Xml の作業の詳細については、「[方法] XPathNavigator クラスおよび XPathNodeIterator クラスを操作する方法」を参照してください。
Loading イベント ハンドラを追加する
前の手順で作成した HelloWorld プロジェクトを開きます。
InfoPath と Microsoft Visual Studio Tools for Applications (VSTA) を使用している場合は、InfoPath を起動して、InfoPath のデザイン モードでフォームを開きます。Visual Studio 2005 と Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System または Visual Studio 2008 と Visual Studio Tools for Office を使用している場合は、Visual Studio を起動してプロジェクトを開きます。
[表示] メニューの [データ ソース] をクリックします。
[マイフィールド] フォルダを右クリックして [追加] をクリックします。
[名前] ボックスに「employee」と入力して [OK] をクリックします。
employee フィールドをビューにドラッグします。
InfoPath で作業している場合は、[ツール] メニューの [プログラミング] をクリックし、[Loading イベント] をクリックします。
Visual Studio で作業している場合は、[挿入] メニューの [イベント] をクリックし、[Loading イベント] をクリックします。
これにより Loading イベントのイベント ハンドラが作成され、コード エディタのフォーカスがそのイベント ハンドラに移動します。
コード エディタで、以下のように入力します。
public void FormEvents_Loading(object sender, LoadingEventArgs e) { System.Xml.XPath.XPathNavigator root, user; root = this.MainDataSource.CreateNavigator(); user = root.SelectSingleNode("//my:employee", this.NamespaceManager); user.SetValue(System.Environment.UserName); }
Public Sub FormEvents_Loading(ByVal sender As Object, ByVal e As LoadingEventArgs) Dim root, user As System.Xml.XPath.XPathNavigator root = Me.MainDataSource.CreateNavigator user = root.SelectSingleNode("//my:employee", Me.NamespaceManager) user.SetValue(System.Environment.UserName) End Sub
Microsoft Visual Studio Tools for Applications (VSTA) で作業している場合は、InfoPath フォーム デザイン ウィンドウに切り替え、[プレビュー] ボタンをクリックしてフォームをプレビューします。
Visual Studio で作業している場合は、[デバッグ] メニューの [デバッグ開始] をクリックするかまたは F5 キーを押して、フォームをプレビューします。
次の手順
他のコントロールとイベントのイベント ハンドラの作業については、「[方法] イベント ハンドラを追加する方法」を参照してください。
フォーム テンプレート内でのコードのプレビューとデバッグについては、「[方法] InfoPath マネージ コード フォーム テンプレートをプレビューおよびデバッグする方法」を参照してください。
マネージ コード フォーム テンプレートを展開する方法については、「[方法] InfoPath プロジェクトを展開する方法」を参照してください。
マネージ コード フォーム テンプレートの InfoPath オブジェクト モデルと一般的なプログラミング タスクについては、「InfoPath オブジェクト モデルと一般的な開発タスクについて」を参照してください。