次の方法で共有


[方法] InfoPath 2003 オブジェクト モデルを使用して警告とダイアログ ボックスを表示する方法

InfoPath 2003 オブジェクト モデルを使用するフォーム テンプレートの機能を拡張するためのコードを書く際、ユーザーにダイアログ ボックス形式で情報を表示すると便利な場合があります。ダイアログ ボックスと関連ユーザー インターフェイス要素をプログラムから表示するには、InfoPath で、UIObject インターフェイスのメソッドを使用します。

UIObject インターフェイスの概要

UIObject インターフェイスは、以下のメソッドを提供します。フォームの開発者は、これらを使用して、InfoPath のユーザーがフォームに入力する際に表示する各種のダイアログ ボックスを作成することができます。

名前 説明

Alert

指定したメッセージ文字列を含む単純なメッセージ ボックスを表示します。このメソッドは、ユーザーからの入力が必要なく、メッセージを表示する必要がある場合にのみ使用します。表示されるダイアログ ボックスは、[OK] ボタンをクリックして閉じることができます。

Confirm

ユーザーが入力可能なメッセージ ボックスをいくつかのボタンと共に表示します。返される値は、XdConfirmChoice 列挙定数の 1 つです。

SetSaveAsDialogFileName

[名前を付けて保存] ダイアログ ボックスにフォームの既定のファイル名を設定します。

SetSaveAsDialogLocation

[名前を付けて保存] ダイアログ ボックスが開いたときに参照を開始する場所を設定します。

ShowMailItem

既定の電子メール アプリケーション内で新しい電子メール メッセージを作成し、現在開いているフォームをメッセージに添付します。

ShowModalDialog

指定した .html ファイルと場所引数に基づいてモーダル ダイアログ ボックスを表示します。このメソッドは、ユーザーに単純なメッセージ以上の内容を表示する必要があり、ユーザーから、Confirm メソッドで表示される [はい]、[いいえ]、および [キャンセル] ボタンでの単純な確認以上の内容のデータを受け取る必要がある場合に使用します。

ShowSignatureDialog

組み込みの [デジタル署名] ダイアログ ボックスを表示します。

UIObject インターフェイスの使用

UIObject インターフェイスは、XDocument インターフェイスの UI プロパティを通じてアクセスされます。これは、フォーム コード クラスの _Startup メソッドで初期化される thisXDocument 変数を通じてアクセスされます。次の例では、UIObject インターフェイスの ShowMailItem メソッドと Alert メソッドを使用する方法を示します。

thisXDocument.UI.ShowMailItem("someone@example.com","", "", 
   "Updated Form", "Here is the updated form that you requested.");

thisXDocument.UI.Alert("The e-mail message has been created.");
thisXDocument.UI.ShowMailItem("someone@example.com", "", "", _
   "Updated Form", "Here is the updated form that you requested.")

thisXDocument.UI.Alert("The e-mail message has been created.")

ShowModalDialog メソッドの使用

この例では、UIObject インターフェイスの ShowModalDialog メソッドを使用して、HTML ファイル show.html 内で定義されるカスタム ダイアログ ボックスを表示する方法を示します。

public void CTRL1_5_OnClick(DocActionEvent e)
{
   // Write your code here.
   thisXDocument.UI.ShowModalDialog(
      "show.html",(object)thisXDocument,200,450,50,50);
}
Public Sub CTRL1_5_OnClick(ByVal e As DocActionEvent)
   ' Write your code here.
   thisXDocument.UI.ShowModalDialog( _
      "show.html", _
      DirectCast(thisXDocument, Object), 200, 450, 50, 50)
End Sub

Visual C# と Visual Basic のサンプルは両方とも、ShowModalDialog メソッドによって呼び出されるダイアログ ボックスを定義する "show.html" と名付けられた HTML ファイルに依存します。この HTML ファイルは、フォームからのデータを表示し、ユーザーが値を入力するためのテキスト ボックスを表示します。テキスト ボックス内の値は、ダイアログ ボックスが閉じたときにフォームに返されます。

<HTML>
   <HEAD>
      <script language="JScript">
function BtnClick()
{
   xdocument = window.dialogArguments;
   myXml = xdocument.DOM.xml
   aForm = oForm.elements;
   aForm.textBox.value = myXml;
}
      </script>
   </HEAD>
   <BODY>
      <H1><FONT face="Arial">This is a modal dialog box</FONT> &nbsp;
      </H1>
      <BUTTON onclick="BtnClick()" id="BUTTON1" type="button">
         Get XML DOM
      </BUTTON>
      <FORM ID="oForm">
         <INPUT Type="text" name="textBox">
      </FORM>
   </BODY>
</HTML>
メモ重要 :

ShowModal メソッドが実行またはプレビューを行うには、完全な信頼が必要です。詳細については、「[方法] 完全信頼が必要なマネージ コード フォーム テンプレートをプレビューおよびデバッグする方法」を参照してください。

Windows フォームを使用したダイアログ ボックス

前の例で示したように、HTML ファイルを使用してダイアログ ボックスの内容を表示する代わりに、InfoPath フォームから、Windows フォームをダイアログ ボックスとして表示することができます。この例では、InfoPath フォーム上の ShowDialog と名付けられたボタンから、カスタム ダイアログ ボックスとして Windows フォームを表示する方法を示します。この場合は UIObject インターフェイスや InfoPath オブジェクト モデルのその他のメンバのインターフェイスを必要としません。

メモメモ :

Windows フォームを作成して、Microsoft Visual Studio Tools for Applications (VSTA) を使用して作成した InfoPath フォーム テンプレート プロジェクトに追加することはできません。Windows フォームを作成してフォーム テンプレート プロジェクトに追加するには、Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System と Visual Studio 2005 または Visual Studio 2008 と Visual Studio Tools for Office を使用する必要があります。

public void ShowDialog_OnClick(DocActionEvent e)
{
   // Instantiate and show Form1.
   Form1 myform = new Form1();
   myform.Show();
}
Public Sub ShowDialog_OnClick(ByVal e As DocActionEvent)
   ' Instantiate and show Form1.
   Dim MyForm As New Form1()
   MyForm.Show()
End Sub

Visual C# と Visual Basic のサンプルは両方とも、InfoPath フォームの [ShowDialog] ボタンのイベント ハンドラによって呼び出されるダイアログ ボックスを定義する、"Form1" と名付けられた Windows フォームに依存します。Form1 を InfoPath プロジェクトに追加するには、以下の手順を使用します。

Windows フォームを InfoPath プロジェクトに追加する

  1. [ソリューション エクスプローラ] でフォーム コード プロジェクト (projectnameFormCode) を右クリックし、[追加] をポイントして、[Windows フォームの追加] をクリックします。

  2. [新しい項目の追加] ダイアログ ボックスで、フォームに名前を付け、[開く] をクリックします。

  3. [ツールボックス] から [ボタン] コントロールをフォーム上にドラッグします。

  4. ボタンをダブルクリックし、以下のコードをボタンのイベント ハンドラに追加します。

   // Close the form.
   this.Close();
   ' Close the form.
   Me.Close()