HtmlTaskPane (Clase)

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

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

Sintaxis

Public MustInherit Class HtmlTaskPane
    Inherits TaskPane

Dim instance As HtmlTaskPane
public abstract class HtmlTaskPane : TaskPane

Comentarios

El objeto HTMLTaskPane proporciona propiedades y métodos para trabajar con los paneles de tareas personalizados de InfoPath, y 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 añadir un panel de tareas personalizado a una plantilla de formulario, primero debe crear uno o varios archivos HTML y añadirlos como archivos de recursos mediante el comando Archivos de recursos del menú Herramientas 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 Opciones de formulario del menú Herramientas, 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.

Ejemplo

En el ejemplo siguiente, 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 ejemplo siguiente, 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 secuencias de comandos 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 ficha .NET del cuadro de diálogo Agregar referencia en Microsoft Visual Studio Tools para aplicaciones (VSTA) o en Visual Studio.

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

Jerarquía de herencia

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

Seguridad de subprocesos

Todos los miembros estáticos públicos (compartidos en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancia sean seguros para los subprocesos.

Vea también

Referencia

HtmlTaskPane (Miembros)
Microsoft.Office.InfoPath (Espacio de nombres)