HtmlTaskPane-Klasse

Stellt den benutzerdefinierten Aufgabenbereich dar, der dem aktuellen Fenster zugeordnet ist, in dem ein Formular bearbeitet wird.

Vererbungshierarchie

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

Namespace:  Microsoft.Office.InfoPath
Assembly:  Microsoft.Office.InfoPath (in Microsoft.Office.InfoPath.dll)

Syntax

'Declaration
Public MustInherit Class HtmlTaskPane _
    Inherits TaskPane
'Usage
Dim instance As HtmlTaskPane
public abstract class HtmlTaskPane : TaskPane

Hinweise

Benutzerdefinierte InfoPath-Aufgabenbereiche können nur in einer Formularvorlage verwendet werden, für die die Kompatibilität auf InfoPath Editor festgelegt wurde. Zum Festlegen der Kompatibilität einer Formularvorlage klicken Sie auf die Registerkarte Datei, dann auf Formularoptionen und anschließend auf die Kategorie Kompatibilität.

Das HtmlTaskPane-Objekt stellt Eigenschaften und Methoden zum Arbeiten mit benutzerdefinierten InfoPath-Aufgabenbereichen bereit und erbt außerdem die Eigenschaften der TaskPane-Klasse.

Die Eigenschaften, die für einen InfoPath-Aufgabenbereich verfügbar sind, werden durch den Typ des Aufgabenbereichs bestimmt, mit dem Sie arbeiten. Wenn die TaskPaneType-Eigenschaft TaskPaneType.Html zurückgibt, handelt es sich um einen benutzerdefinierten Aufgabenbereich, und die verfügbaren Eigenschaften und Methoden werden von der HtmlTaskPane-Klasse bereitgestellt. Wenn die TaskPaneType-Eigenschaft einen anderen Wert zurückgibt, handelt es sich um einen integrierten Aufgabenbereich, und die Eigenschaften werden von der TaskPane-Klasse bereitgestellt.

Die TaskPaneType-Eigenschaft gibt von der TaskPaneType-Enumeration definierte Werte zurück. Diese Enumerationswerte werden auch als Argumente für die Item[TaskPaneType]-Eigenschaft der TaskPaneCollection-Klasse verwendet, um einen Verweis auf einen angegebenen Typ von Aufgabenbereich zurückzugeben.

Wenn Sie einen benutzerdefinierten Aufgabenbereich aktivieren und einer Formularvorlage hinzufügen möchten, müssen Sie zuerst eine oder mehrere HTML-Dateien erstellen und diese als Ressourcendateien hinzufügen, indem Sie im Entwurfsmodus für Formularvorlagen den Befehl Ressourcendateien auf der Registerkarte Daten verwenden. Anschließend müssen Sie eine der HTML-Dateien als standardmäßigen benutzerdefinierten Aufgabenbereich der Formularvorlage konfigurieren, indem Sie auf die Registerkarte Datei klicken, dann auf Formularoptionen und auf die Kategorie Programmierung klicken und anschließend das Kontrollkästchen Benutzerdefinierten Aufgabenbereich aktivieren aktivieren.

Hinweis

Die Eigenschaften und Methoden des HtmlTaskPane-Objekts können von einem Ereignishandler für das Loading-Ereignis nicht aufgerufen werden, da die Ansicht beim Eintreten dieses Ereignisses noch nicht geladen ist und der Ansicht Aufgabenbereiche zugeordnet sind.

Beispiele

Im folgenden Beispiel wird die Item-Eigenschaft der TaskPaneCollection-Klasse verwendet, um einen Verweis auf das TaskPane-Objekt abzurufen, das den benutzerdefinierten Aufgabenbereich darstellt und in den HtmlTaskPane-Typ umgewandelt wird. Der Code ruft dann die Navigate-Methode der HtmlTaskPane-Klasse auf, um eine HTML-Datei zu öffnen, die die aktuelle HTML-Datei ersetzt, die als benutzerdefinierter Aufgabenbereich geladen wird.

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

Im folgenden Beispiel wird die Item-Eigenschaft der TaskPaneCollection-Klasse verwendet, um einen Verweis auf das TaskPane-Objekt abzurufen, das den benutzerdefinierten Aufgabenbereich darstellt. Der Code ruft dann eine Skriptfunktion, die im HTML-Code des benutzerdefinierten Aufgabenbereichs definiert ist, mithilfe der HtmlDocument-Eigenschaft der HtmlTaskPane-Klasse auf.

Zum Arbeiten mit dem Objektmodell der HTML-Datei, die als benutzerdefinierter Aufgabenbereich angegeben ist, verwenden Sie das von der Microsoft HTML-Objektbibliothek (MSHTML.dll) bereitgestellte Objektmodell. Bei verwaltetem Code fügen Sie dazu auf der Registerkarte .NET des Dialogfelds Verweis hinzufügen in Visual Studio 2012 einen Verweis auf Microsoft.mshtml hinzu.

Im folgenden Beispiel wird davon ausgegangen, dass sich die using mshtml; oder Imports mshtml-Direktive im Deklarationenabschnitt der Formularcodedatei befindet.

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

Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind threadsicher. Die Threadsicherheit von Instanzmembern ist nicht gewährleistet.

Siehe auch

Referenz

HtmlTaskPane-Member

Microsoft.Office.InfoPath-Namespace