チュートリアル: コードを含む基本的なフォーム テンプレートの作成Walkthrough: Create a basic form template with code

Microsoft InfoPath の場合は、Visual Basic または C# でビジネス ロジックを記述できます。これを実行するには、フォーム テンプレートを InfoPath のデザイン モードで開き、いずれかのユーザー インターフェイス コマンドを使用してイベント ハンドラーを追加します。これにより、コードを記述するための Visual Studio 2012 開発環境が開きます。既定では、Visual Studio 2012 を使用して作成したフォーム テンプレート プロジェクトは、Microsoft.Office.InfoPath 名前空間によって提供されるマネージ コード オブジェクト モデルに対して動作します。In Microsoft InfoPath, you can write business logic in Visual Basic or C# by opening a form template in the InfoPath designer, and then using one of the user interface commands to add an event handler, which will open the Visual Studio 2012 development environment for writing your code. By default, form template projects created using Visual Studio 2012 work against the managed code object model provided by the Microsoft.Office.InfoPath namespace.

このチュートリアルでは、最初に、Visual Studio 2012 開発環境で C# または Visual Basic を使用して、単純な Hello World アプリケーションを作成する方法を示します。チュートリアルの最後には、User クラスの UserName プロパティを使用して現在のユーザー名を取得し、[ テキスト ボックス] コントロールにその値を設定する方法を示すコード サンプルがあります。This walkthrough first shows you how to create a simple Hello World application using C# or Visual Basic in the Visual Studio 2012 development environment. The walkthrough concludes with a code sample that shows you how to use the UserName property of the User class to retrieve the current user's name and populate a Text Box control with that value.

前提条件Prerequisites

Visual Studio 2012 開発環境を使用してこのチュートリアルを完了するには、以下が必要です。In order to complete this walkthrough using the Visual Studio 2012 development environment, you will need:

  • Microsoft InfoPath がインストールされた Visual Studio 2012。Microsoft InfoPath with Visual Studio 2012 installed.

Visual Studio Tools for Applications の Hello WorldHello World in Visual Studio Tools for Applications

以下のチュートリアルでは、Visual Studio 2012 開発環境で ButtonEvent クラスの Clicked イベントのイベント ハンドラーを記述することによって、[ ボタン] コントロールに関連付けられた単純な警告ダイアログ ボックスを表示する方法を学びます。In the following walkthrough, you will learn how to write code in the Visual Studio 2012 development environment to display a simple alert dialog box by writing an event handler for the Clicked event of the ButtonEvent class, which is associated with the Button control.

新しいプロジェクトを作成してプログラミング言語を指定するCreate a new project and specify the programming language

  1. InfoPath デザイン モードを起動して、[ 空白 (InfoPath エディター)] フォーム テンプレートをダブルクリックします。Start the InfoPath designer, and then double-click the Blank (InfoPath Editor) form template.

  2. 使用するプログラミング言語を指定するために、[ ファイル] タブをクリックし、[ フォームのオプション] をクリックして、[ カテゴリ] の一覧の [ プログラミング] をクリックします。次に、[ フォーム テンプレートのコード言語] ドロップダウン リストから [ Visual Basic] または [ C#] を選択します。To specify which programming language to use, click the Office Button, click Form Options, click Programming in the Category list, and then select either Visual Basic or C# from the Form template code language drop-down list.

    注意

    [ フォーム テンプレートのコード言語] ドロップダウン リスト内のその他のプログラミング言語オプションでは、以前のバージョンの InfoPath との互換性が提供されています。[ C# (InfoPath 2007 互換)] および [ Visual Basic (InfoPath 2007 互換)] オプションは、このトピック内の手順で機能します。[ C# (InfoPath 2003 互換)] および [ Visual Basic (InfoPath 2003 互換)] オプションを使用する場合は、「[ウォークスルー] InfoPath 2003 オブジェクト モデルを使用して基本的なフォーム テンプレートを作成およびデバッグする方法」を参照してください。The other programming language options in the Form template code language drop-down list provide compatibility with previous versions of InfoPath. The C# (InfoPath 2007 Compatible) and Visual Basic (InfoPath 2007 Compatible) options will work with the procedures in this topic. However, to use the C# (InfoPath 2003 Compatible) and Visual Basic (InfoPath 2003 Compatible) options, see Walkthrough: Creating and Debugging a Basic Form Template Using the InfoPath 2003 Object Model.

    これで、[ ボタン] コントロールを追加して、イベント ハンドラーを作成できます。You are now ready to add a Button control and create its event handler.

ボタン コントロールとイベント ハンドラーを追加するAdd a Button control and event handler

  1. [ コントロール] グループの [ ボタン] コントロールをクリックして、ボタン コントロールをフォームに追加します。In the Controls group, click the Button control to add it the form.

  2. [ ボタン] コントロールをダブルクリックして、リボンの [ プロパティ] タブの [ ラベル] プロパティに「Hello」と入力し、[ ユーザー設定コード] をクリックします。入力を要求するメッセージが表示されたら、フォームに HelloWorld という名前を付けて保存します。Double-click the Button control, type Hello for the Label property on the Properties tab of the ribbon, and then click Custom Code. When prompted, save the form and name it HelloWorld.

    これにより、[ ボタン] コントロールの Clicked イベントのイベント ハンドラーにカーソルが置かれた状態で [ Visual Studio Tools for Applications] 環境が開きます。This will open the Visual Studio Tools for Applications environment with the cursor in the event handler for the Clicked event of Button control.

    これでボタンのイベント ハンドラーにフォーム コードを追加する準備ができました。You are now ready to add form code to the event handler for the button.

イベント ハンドラーに "Hello World" コードを追加してフォームをプレビューするAdd "Hello World" code to the event handler and preview the form

  1. イベント ハンドラー スケルトンに次のように入力します。In the event handler skeleton, type:

    MessageBox.Show("Hello World!");
    
    MessageBox.Show("Hello World!")
    

    フォーム テンプレートのコードは次のようになります。The code for your form template should look similar to the following:

     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
    
  2. InfoPath デザイン モード ウィンドウに切り替えます。Switch to the InfoPath designer window.

  3. [ ホーム] タブの [ プレビュー] ボタンをクリックします。Click the Preview button on the Home tab.

  4. フォーム上の [Hello] ボタンをクリックします。Click the Hello button on the form.

    "Hello World!" という内容のメッセージ ボックスが表示されます。A message box will be displayed with the text "Hello World!"

    次の手順は、フォーム コードにデバッグ用のブレークポイントを追加する方法を示しています。The next procedure shows how to add debugging breakpoints to your form code.

フォーム コードをデバッグするDebug form code

  1. Visual Studio 2012 ウィンドウに戻ります。Switch back to the Visual Studio 2012 window.

  2. 行の左にあるグレーのバーをクリックします。Click the grey bar to the left of the line:

    MessageBox.Show("Hello World!");
    
    MessageBox.Show("Hello World!")
    

    赤い円が表示され、コード行が強調表示されます。これは、ランタイムがフォーム コードのこのブレークポイントで一時停止することを表しています。A red circle is displayed and the line of code is highlighted to indicate that the runtime will pause at this breakpoint in your form code.

  3. [ デバッグ] メニューの [ デバッグ開始] をクリックします (または F5 キーを押します)。On the Debug menu, click Start Debugging (or press F5).

  4. InfoPath の [ プレビュー] ウィンドウで、フォーム上の [Hello] ボタンをクリックします。In the InfoPath Preview window, click the Hello button on the form.

  5. Visual Studio 2012 コード エディターにフォーカスが移り、ブレークポイント行が強調表示されます。The Visual Studio 2012 code editor is given focus, and the breakpoint line is highlighted.

  6. [ デバッグ] メニューで [ ステップ オーバー] をクリックするか、または Shift キーを押しながら F8 キーを押して、コード内を順に移動します。On the Debug menu, click Step Over (or press Shift+F8) to continue stepping through the code.

  7. イベント ハンドラー コードが実行され、"Hello World!" メッセージが表示されます。The event handler code is executed, and the "Hello World!" message is displayed.

  8. [OK] をクリックして Visual Studio 2012 コード エディターに戻り、[デバッグ] メニューの [デバッグの停止] をクリックします (または Ctrl+Alt+Break を押します)。Click OK to return to the Visual Studio 2012 code editor, and then click Stop Debugging on the Debug menu (or press Ctrl+Alt+Break).

現在のユーザーの名前を取得するGetting the Current User's Name

次の例では、User クラスの UserName プロパティを使用して現在のユーザーの名前を取得し、 Loading イベントのイベント ハンドラーを使用して、[ テキスト ボックス] コントロールの値を挿入する方法を学びます。In the following example, you will learn how to use the UserName property of the User class to retrieve the name of the current user and populate the value of a Text Box control by using an event handler for the Loading event.

[ テキスト ボックス] コントロールへの値の設定は、XPathNavigator クラスのインスタンスを使用して、そのコントロールのバインド先である XML ノードに現在のユーザーの名前を書き込んで行います。Populating the Text Box control is accomplished by using an instance of the XPathNavigator class to write the current user's name to the XML node that the control is bound to.

まず、XmlForm クラスの MainDataSource プロパティを呼び出して、フォームの基盤となる XML ドキュメントを表す DataSource クラスのインスタンスを取得します。次に、 DataSource オブジェクトが CreateNavigator メソッドを呼び出して、このメソッドが XPathNavigator オブジェクトを作成し、そのオブジェクトをフォームのメイン データ ソースのルート ノードに置きます。First, the MainDataSource property of the XmlForm class is called to retrieve an instance of the DataSource class that represents the underlying XML document of the form. The DataSource object then calls the CreateNavigator method, which creates the XPathNavigator object and positions it at the root node of the form's main data source.

XPathNavigator クラスの SelectSingleNode メソッドが呼び出され、フォームのデータ ソースの employee フィールドを選択します。最後に、 SetValue メソッドが呼び出され、 UserName プロパティを使用してそのフィールドの値を設定します。The SelectSingleNode method of the XPathNavigator class is called to select the employee field in the form's data source. Finally, the SetValue method is called to set the value of the field with the UserName property.

マネージ コード フォーム テンプレートでの System.Xml の作業の詳細については、「XPathNavigator クラスおよび XPathNodeIterator クラスを操作する」を参照してください。For more information on working with System.Xml in managed code form templates, see How to: Work with the XPathNavigator and XPathNodeIterator Classes.

Loading イベント ハンドラーを追加するAdd a Loading event handler

  1. 前の手順で作成した HelloWorld フォーム テンプレートを InfoPath デザイン モードで開きます。Open the HelloWorld form template that you created in the previous walkthrough in the InfoPath designer.

  2. [ 表示] タブの [ フィールドの表示] を選択します。On the View tab, select Show Fields.

  3. [ マイフィールド] フォルダーを右クリックして [ 追加] をクリックします。Right click the myFields folder, and then click Add.

  4. [ 名前] に「employee」と入力して、[ OK] をクリックします。In Name, type employee, and then click OK.

  5. employee フィールドをビューにドラッグします。Drag the employee field onto the view.

  6. [ 開発] タブの [ Loading イベント] をクリックします。On the Developer tab, click Loading Event.

    これにより Loading イベントのイベント ハンドラーが作成され、コード エディターのフォーカスがそのイベント ハンドラーに移動します。This will create an event handler for the Loading event, and move the focus to that event handler in the code editor.

  7. コード エディターで、以下のように入力します。In the code editor, type the following:

     public void FormEvents_Loading(object sender, LoadingEventArgs e)
     {
         XPathNavigator dataSource;
         dataSource = this.MainDataSource.CreateNavigator();
         dataSource.SelectSingleNode(
             "/my:myFields/my:employee", NamespaceManager).SetValue(this.User.UserName);
     }
    
     Public Sub FormEvents_Loading(ByVal sender As Object, ByVal e As LoadingEventArgs)
         Dim dataSource As XPathNavigator
         dataSource = Me.MainDataSource.CreateNavigator
         dataSource.SelectSingleNode( _
             "/my:myFields/my:employee", NamespaceManager).SetValue(Me.User.UserName)
     End Sub
    
  8. InfoPath フォーム デザイン ウィンドウに切り替え、[ ホーム] タブの [ プレビュー] ボタンをクリックしてフォームをプレビューします。Switch to the InfoPath form design window, and then click the Preview button on the Home tab to preview the form.

    employee フィールドに現在のユーザー名が自動的に入力されます。The employee field should automatically fill in with your user name.

次の手順Next steps

関連項目See also