Clase HtmlTaskPane

Representa el panel de tareas personalizado asociado a la ventana en la que se está editando el formulario.

Jerarquía de la herencia

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

Espacio de nombres:  Microsoft.Office.InfoPath
Ensamblado:  Microsoft.Office.InfoPath (en Microsoft.Office.InfoPath.dll)

Sintaxis

'Declaración
Public MustInherit Class HtmlTaskPane _
    Inherits TaskPane
'Uso
Dim instance As HtmlTaskPane
public abstract class HtmlTaskPane : TaskPane

Comentarios

Los paneles de tareas personalizados de InfoPath solo pueden usarse en una plantilla de formulario con la compatibilidad configurada en Editor de InfoPath. Para configurar la compatibilidad de una plantilla de formulario, haga clic en la pestaña Archivo, en Opciones de formulario y luego haga clic en la categoría Compatibilidad.

El objeto HtmlTaskPane proporciona propiedades y métodos para trabajar con los paneles personalizados de InfoPath y también hereda las propiedades de la clase TaskPane.

Las propiedades que están disponibles para un panel de tareas de InfoPath vienen determinadas por el tipo de panel de tareas con que se trabaje. Si la propiedad TaskPaneType devuelve TaskPaneType.Html, el panel de tareas es personalizado y las propiedades y métodos disponibles son los que proporciona la clase HtmlTaskPane. Si la propiedad TaskPaneType devuelve cualquier otro valor, se trata de un panel de tareas integrado y las propiedades son las que proporciona la clase TaskPane.

La propiedad TaskPaneType devuelve valores definidos por la enumeración TaskPaneType. Estos valores enumerados se utilizan también como argumentos de la propiedad Item[TaskPaneType] de la clase TaskPaneCollection para devolver una referencia a un tipo específico de panel de tareas.

Para habilitar y agregar un panel de tareas personalizado a una plantilla de formulario, primero debe crear uno o varios archivos HTML y agregarlos como archivos de recursos mediante el comando Archivos de recursos de la pestaña Datos en el modo de diseño de plantillas de formulario. A continuación, debe configurar unos de los archivos HTML como panel de tareas personalizado predeterminado de la plantilla de formulario haciendo clic en la pestaña Archivo, Opciones del formulario, haciendo clic en la categoría Programación y, a continuación, activando la casillaHabilitar el panel de tareas personalizado.

Nota

No se puede llamar a las propiedades y los métodos del objeto HtmlTaskPane desde un controlador de eventos para el evento Loading porque la vista todavía no está cargada cuando se produce este evento y los paneles de tareas están asociados a la vista.

Ejemplos

En el siguiente ejemplo, se usa la propiedad Item de la clase TaskPaneCollection para obtener una referencia al objeto TaskPane que representa el panel de tareas personalizado, que se convierte en el tipo HtmlTaskPane. A continuación, el código llama al método Navigate de la clase HtmlTaskPane para abrir un archivo HTML, que reemplaza al archivo HTML que se ha cargado como panel de tareas personalizado.

// 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")

En el siguiente ejemplo, se usa la propiedad Item de la clase TaskPaneCollection para obtener una referencia al objeto TaskPane que representa el panel de tareas personalizado. A continuación, el código llama a una función de scripting definida en el código HTML del panel de tareas personalizado utilizando la propiedad HtmlDocument de la clase HtmlTaskPane.

Para poder trabajar con el modelo de objetos del archivo HTML especificado como panel de tareas personalizado, se usa el modelo de objetos proporcionado por la biblioteca de objetos HTML de Microsoft (MSHTML.dll). Para hacerlo desde código administrado, se debe agregar una referencia a Microsoft.mshtml en la pestaña .NET del cuadro de diálogo Agregar referencia en Visual Studio 2012.

En el ejemplo siguiente se supone que se dispone de una directiva using mshtml; o Imports mshtml en la sección de declaraciones del archivo de código del formulario.

// 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

Seguridad para subprocesos

Los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para los subprocesos.

Vea también

Referencia

Miembros HtmlTaskPane

Espacio de nombres Microsoft.Office.InfoPath