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.