次の方法で共有


HtmlTaskPane クラス

フォームを編集中の現在のウィンドウに関連付けられているカスタム作業ウィンドウを表します。

継承階層

System.Object
  Microsoft.Office.InfoPath.TaskPane
    Microsoft.Office.InfoPath.HtmlTaskPane

名前空間:  Microsoft.Office.InfoPath
アセンブリ:  Microsoft.Office.InfoPath (Microsoft.Office.InfoPath.dll)

構文

'宣言
Public MustInherit Class HtmlTaskPane _
    Inherits TaskPane
'使用
Dim instance As HtmlTaskPane
public abstract class HtmlTaskPane : TaskPane

解説

InfoPath のカスタム作業ウィンドウは、互換性を [InfoPath エディター] に設定したフォーム テンプレートでのみ使用できます。フォーム テンプレートの互換性を設定するには、[ファイル] タブ、[フォームのオプション]、[互換性] カテゴリの順にクリックします。

HtmlTaskPane オブジェクトは、InfoPath のカスタム作業ウィンドウを操作するためのプロパティとメソッドを提供し、さらに TaskPane クラスのプロパティも継承します。

InfoPath の作業ウィンドウで使用できるプロパティは、使用する作業ウィンドウの種類によって決まります。TaskPaneType プロパティから TaskPaneType.Html が返される場合は、作業ウィンドウはカスタム作業ウィンドウであり、HtmlTaskPane クラスにより提供されているプロパティとメソッドを使用できます。TaskPaneType プロパティからその他の任意の値が返される場合は、作業ウィンドウは組み込みの作業ウィンドウであり、プロパティは TaskPane クラスによって提供されます。

TaskPaneType プロパティは、TaskPaneType 列挙で定義されている値を返します。これらの列挙値は、指定された種類の作業ウィンドウへの参照を返す TaskPaneCollection クラスの Item[TaskPaneType] プロパティに渡す引数としても使用できます。

カスタム作業ウィンドウを有効にしてフォーム テンプレートに追加するには、まず、1 つ以上の HTML ファイルを作成し、フォーム テンプレート デザイン モードの [データ] タブの [リソース ファイル] コマンドを使用してそれをリソース ファイルとして追加する必要があります。次に、HTML ファイルの 1 つをフォーム テンプレートの既定のカスタム作業ウィンドウとして構成します。これを行うには、[ファイル] タブ、[フォームのオプション]、[プログラミング] カテゴリの順にクリックしてから、[カスタム作業ウィンドウを有効にする] チェック ボックスをオンにします。

注意

Loading イベントが発生したときにはまだビューが読み込まれておらず、作業ウィンドウはビューに関連付けられているため、このイベントのイベント ハンドラーから HtmlTaskPane オブジェクトのプロパティやメソッドを呼び出すことはできません。

次の例では、TaskPaneCollection クラスの Item プロパティを使用して、カスタム作業ウィンドウを表す TaskPane オブジェクトへの参照を取得しています。この参照は、HtmlTaskPane 型にキャストされます。このコードは、次に HtmlTaskPane クラスの Navigate メソッドを呼び出して、HTML ファイルを開いています。カスタム作業ウィンドウとして読み込まれている現在の HTML ファイルがこれによって置き換えられます。

// Get a reference to the custom task pane. 
// It is always index [0] in the TaskPanes collection.
HtmlTaskPane oTaskPane = (Microsoft.Office.InfoPath.HtmlTaskPane)
   (this.CurrentView.Window.TaskPanes[0]);

// Navigate to new task pane based on url specified.
oTaskPane.Navigate("taskpane2.html");
' Get a reference to the custom task pane. It is always index (0) in 
' the TaskPanes collection.
Dim oTaskPane As HtmlTaskPane = _
   DirectCast(Me.CurrentView.Window.TaskPanes(0), _
   Microsoft.Office.InfoPath.HtmlTaskPane)

' Navigate to new task pane based on url specified.
oTaskPane.Navigate("taskpane2.html")

次の例では、TaskPaneCollection クラスの Item プロパティを使用して、カスタム作業ウィンドウを表す TaskPane オブジェクトへの参照を取得しています。このコードは、次に HtmlTaskPane クラスの HtmlDocument プロパティを使用して、カスタム作業ウィンドウの HTML コード内で定義されているスクリプト関数を呼び出しています。

カスタム作業ウィンドウとして指定された HTML ファイルのオブジェクト モデルを操作できるようにするには、Microsoft HTML オブジェクト ライブラリ (MSHTML.dll) により提供されたオブジェクト モデルを使用します。これをマネージ コードから行うには、Microsoft Visual Studio Tools for Applications の [参照の追加] ダイアログ ボックスの [.NET] タブで、Microsoft.mshtml への参照を追加します。

次の例では、既にフォーム コード ファイルの宣言セクションに using mshtml; または Imports mshtml ディレクティブが記述してあるものとしています。

// Ensure View has loaded before trying to access the task pane.
if (this.CurrentView != null)
{
   // Get a reference to the custom task pane. It is always index [0]
   // in the TaskPanes collection.
   HtmlTaskPane custom = (Microsoft.Office.InfoPath.HtmlTaskPane)
      this.CurrentView.Window.TaskPanes[0];

   // Get a reference to the custom task pane document.
   IHTMLDocument2 oHTMLdoc = (IHTMLDocument2)custom.HtmlDocument;

   // Ensure that the task pane is completely loaded.
   if (custom != null && oHTMLdoc.readyState == "complete")
   {
      // Get a reference to the parent window of the task pane. 
      IHTMLWindow2 window = (IHTMLWindow2)custom.HtmlWindow;

      // Create array to contain method arguments.
      object[] args = new object[] { "ViewID" };

      // Call into script through CLR late binding mechanism
      window.GetType().InvokeMember(
         "SelectView",      // late bound method name.
         System.Reflection.BindingFlags.InvokeMethod | // binding flags
         System.Reflection.BindingFlags.DeclaredOnly |
         System.Reflection.BindingFlags.Public |
         System.Reflection.BindingFlags.Instance,
         null,     // binder object
         window,   // target object
         args);   // method arguments
   }
}
' Ensure View has loaded before trying to access the task pane.
If Not (Me.CurrentView Is Nothing) Then
   ' Get a reference to the custom task pane. It is always index (0)
   ' in the TaskPanes collection.
   Dim custom As HtmlTaskPane = _
      DirectCast(Me.CurrentView.Window.TaskPanes(0), _
      Microsoft.Office.InfoPath.HtmlTaskPane)

   ' Get a reference to the custom task pane document.
   Dim oHTMLdoc As IHTMLDocument2 = DirectCast(
      custom.HtmlDocument, IHTMLDocument2)

   ' Ensure that the task pane is completely loaded.
   If Not (custom Is Nothing And oHTMLdoc.readyState = "complete") Then
      ' Get a reference to the parent window of the task pane.
      Dim window As IHTMLWindow2 = DirectCast(custom.HtmlWindow, _
         IHTMLWindow2

      ' Create array to contain method arguments.
        Dim args As Object()
        args = New Object() {"ViewID"}

        ' Call into script through CLR late binding mechanism
        window.GetType().InvokeMember( _
         "SelectView", _
         System.Reflection.BindingFlags.InvokeMethod Or _
         System.Reflection.BindingFlags.DeclaredOnly Or _
         System.Reflection.BindingFlags.Public Or _
         System.Reflection.BindingFlags.Instance, _
         Nothing, _
         window, _
         args)
    End If
End If

スレッドの安全性

この型の public static (Visual Basic ではShared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

関連項目

参照

HtmlTaskPane メンバー

Microsoft.Office.InfoPath 名前空間