次の方法で共有


[WALKTHROUGH] InfoPath 2003 オブジェクト モデルを使用して基本的なフォーム テンプレートを作成およびデバッグする方法

ここでは、Microsoft.Office.Interop.InfoPath.SemiTrust 名前空間から提供される InfoPath 2003 互換オブジェクト モデルを使用する基本的な InfoPath マネージ コード フォーム テンプレートを作成する手順を順をおって説明します。

Hello World

次の例では、InfoPath 2003 互換オブジェクト モデルの Alert メソッドを使用して簡単な警告ダイアログ ボックスを表示する方法を説明します。

InfoPath 2003 互換オブジェクト モデルを使用する新しい InfoPath フォーム テンプレートを作成する

  1. [方法] InfoPath 2003 オブジェクト モデルを使用してマネージ コード フォーム テンプレートを作成する方法」の説明に従って、InfoPath 2003 互換オブジェクト モデルを使用する新しいフォーム テンプレートを作成します。

  2. フォーム テンプレート プロジェクトを HelloWorld という名前で保存します。

    プロジェクト システムがコード ファイルとプロジェクト ファイルを作成し、InfoPath のデザイン モードで空白のフォーム テンプレートを開きます。これでイベント ハンドラを追加する準備ができました。

OnClick イベント ハンドラを追加する

  1. [デザイン タスク] 作業ウィンドウの [コントロール] をクリックします。

  2. InfoPath (Microsoft Visual Studio Tools for Applications (VSTA) インストール済み) で作業している場合は、[基本コントロール] の [ボタン] コントロールをクリックして、ビューに挿入します。

    Visual Studio 2005 と Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System または Visual Studio 2008 と Visual Studio Tools for Office で作業している場合は、[ツールボックス] から [manifest.xsf [デザイン]] フォーム デザイナに [ボタン] コントロールをドラッグします。

  3. ボタンをダブルクリックして、[ボタンのプロパティ] ダイアログ ボックスを開きます。

  4. [ラベル] を Alert に変更します。

  5. [ID] を AlertID に変更します。

  6. [フォームのコードを編集] をクリックします。

    OnClick イベントのイベント ハンドラ スケルトンが作成され、VSTA または Visual Studio のコード エディタにフォーカスが移動します。イベント ハンドラの使用の詳細については、「[方法] InfoPath 2003 オブジェクト モデルを使用してイベント ハンドラを追加する方法」を参照してください。

    これでボタンのイベント ハンドラにフォーム コードを追加する準備ができました。

イベント ハンドラにフォーム コードを追加する

  1. OnClick イベント ハンドラに次のコードを入力します。

    thisXDocument.UI.Alert("Hello World!");
    
    thisXDocument.UI.Alert("Hello World!")
    

    コード行に含まれるピリオドを入力するたびに Microsoft IntelliSense のボックスが表示されます。イベント ハンドラ全体は次のようになります。

    [InfoPathEventHandler(MatchPath="AlertID", EventType=InfoPathEventType.OnClick)]
    public void AlertID_OnClick(DocActionEvent e)
    {
        thisXDocument.UI.Alert("Hello World!");
    }
    
    <InfoPathEventHandler(MatchPath:="AlertID", EventType:=InfoPathEventType.OnClick)>
    Public Sub AlertID_OnClick(ByVal e As DocActionEvent)
        thisXDocument.UI.Alert("Hello World!")
    End Sub
    
    メモメモ :

    Alert メソッドを使用する代わりに、System.Windows.Forms 名前空間の MessageBox.Show メソッドを使用してメッセージ ボックスを表示することもできます。それには、System.Windows.Forms アセンブリへの参照を追加し、コード ファイル先頭のディレクティブに using System.Windows.Forms; または Imports System.Windows.Forms を追加し、MessageBox.Show("Hello World!); or MessageBox.Show("Hello World!) のようなコード行を入力する必要があります。

  2. InfoPath (VSTA) を使用している場合は、InfoPath のデザイン モード ウィンドウに切り替え、[標準] ツール バーの [プレビュー] をクリックします。

    Visual Studio で作業している場合は、[デバッグ] メニューの [デバッグ開始] をクリックします (または F5 キーを押します)。

  3. [プレビュー] ウィンドウで [Alert] をクリックします。

    "Hello World!" という内容のメッセージ ボックスが表示されます。

    次の手順は、フォーム コードにデバッグ用のブレークポイントを追加する方法を示しています。

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

  1. コード エディタで次の行の左にあるグレーのバーをクリックします。

    thisXDocument.UI.Alert("Hello World!");
    
    thisXDocument.UI.Alert("Hello World!")
    

    赤い円が表示され、コード行が強調表示されます。これは、ランタイムがフォーム コードのこのブレークポイントで一時停止することを表しています。

  2. [デバッグ] メニューの [デバッグ開始] をクリックします (または F5 キーを押します)。

  3. InfoPath の [プレビュー] ウィンドウで [Alert] をクリックします。

    コード エディタにフォーカスが移動し、ブレークポイント行が強調表示されます。

  4. [デバッグ] メニューの [ステップ オーバー] をクリック (または F10 キーを押下) して、コードのステップ スルーを続行します。

    Alert メソッドのコードが実行され、InfoPath の [プレビュー] ウィンドウに "Hello World!" という通知が表示されます。

現在のユーザーの名前を取得する

.NET Framework のクラスを使用すると、スクリプトでは簡単に利用できなかった機能を利用できます。この例では、.NET Framework のクラスを使用して現在のユーザーの名前を取得する方法を説明します。

OnLoad イベント ハンドラを追加する

  1. 前の例で作成した InfoPath HelloWorld プロジェクトを開きます。

  2. [表示] メニューの [データ ソース] をクリックします。

  3. [マイフィールド] ノードを右クリックし、[追加] をクリックします。

  4. [名前] ボックスに「employee」と入力し、[OK] をクリックします。

  5. [employee] ノードをビューにドラッグします。

  6. InfoPath (VSTA) で作業している場合は、[ツール] メニューの [プログラミング] をクリックし、[Loading イベント] をクリックします。

    Visual Studio で作業している場合は、[挿入] メニューの [イベント] をクリックし、[Loading イベント] をクリックします。

    これによって OnLoad イベントのイベント ハンドラが作成され、コード エディタにフォーカスが移動します。フォームを読み込むたびに、このイベント ハンドラのコードが呼び出されます。次の手順は、ユーザーの名前を取得するフォーム コードをイベント ハンドラに追加する方法を示しています。

フォーム コードを追加する

  1. OnLoad イベント ハンドラに次のコードを入力します。

    // Store an XML DOM node as a local variable.
    IXMLDOMNode nodeEmployee = thisXDocument.DOM.selectSingleNode("my:myFields/my:employee");
    if(nodeEmployee != null)
    {
        if(nodeEmployee.text == "")
        {
        // If the employee name is blank when the form is loaded, 
        // populate the employee node with the current user name.
        nodeEmployee.text = System.Environment.UserName;
        }
    }
    
    // Store an XML DOM node as a local variable.
    Dim nodeEmployee As IXMLDOMNode
    nodeEmployee = thisXDocument.DOM.selectSingleNode("my:myFields/my:employee");
    If Not(nodeEmployee Is Nothing) Then
        If(nodeEmployee.text = "") Then
        // If the employee name is blank when the form is loaded, 
        // populate the employee node with the current user name.
        nodeEmployee.text = System.Environment.UserName
        End If
    End If
    
  2. フォームをコンパイルおよびプレビューします。

    [employee] ボックスに自分のユーザー名が表示されます。

マネージ コード フォーム テンプレートの展開方法については、「[方法] InfoPath プロジェクトを展開する方法」を参照してください。InfoPath オブジェクト モデルと、InfoPath 2003 互換オブジェクト モデルを使用するマネージ コード フォーム テンプレートでよく行うプログラミング作業については、「InfoPath 2003 オブジェクト モデルを理解する」を参照してください。

関連項目

タスク

[方法] InfoPath 2003 オブジェクト モデルを使用してイベント ハンドラを追加する方法

概念

InfoPath 2003 オブジェクト モデルを使用する初期化コードと後処理コード
InfoPath 2003 互換オブジェクト モデル