XmlForm-Klasse
Stellt das zugrunde liegende XML-Dokument eines Formulars dar.
Vererbungshierarchie
System.Object
Microsoft.Office.InfoPath.XmlForm
Namespace: Microsoft.Office.InfoPath
Assembly: Microsoft.Office.InfoPath (in Microsoft.Office.InfoPath.dll)
Syntax
'Declaration
Public MustInherit Class XmlForm
'Usage
Dim instance As XmlForm
public abstract class XmlForm
Hinweise
Die XmlForm-Klasse ist ein Schlüsselobjekt im InfoPath-Objektmodell mit verwaltetem Code, das Eigenschaften, Methoden und Ereignisse bereitstellt, die für die programmgesteuerte Interaktion mit den XML-Daten und die Bearbeitung der Daten in dem einem Formular zugrunde liegenden XML-Dokument verwendet werden können.
Während auf die XmlForm-Objekte über die XmlFormCollection-Klasse mithilfe der XmlForms-Eigenschaft der Application-Klasse zugegriffen werden kann, erfolgt beim Verwenden von Formularvorlagen-Geschäftslogik der Zugriff auf die XmlForm-Klasse und ihre Member in den meisten Fällen mithilfe des this-Schlüsselworts (in C#) oder des Me-Schlüsselworts (in Visual Basic), ohne dass dabei über die Auflistung gegangen werden muss.
Beispielsweise verwenden die folgenden Codebeispiele von Ereignishandlern für das Loading-Ereignis das this- oder das Me-Schlüsselwort, um auf die MainDataSource- und die NamespaceManager-Eigenschaft der XmlForm-Klasse zuzugreifen. Diese Eigenschaften werden in Verbindung mit einer Instanz der System.Xml.XPath.XPathNavigator-Klasse verwendet, um zum Employee-Feld zu navigieren (wobei Namespacepräfixe mithilfe der NamespaceManager-Eigenschaft aufgelöst werden) und dann das Feld auf den Benutzernamen des aktuellen Benutzers festzulegen.
public void FormEvents_Loading(object sender, LoadingEventArgs e)
{
// Create XPathNavigator positioned at the root of the main data
// source.
XPathNavigator myNav = this.MainDataSource.CreateNavigator()
// Select employee field and set value to username.
myNav.SelectSingleNode("//my:employee",this.NamespaceManager).
SetValue(System.Environment.UserName);
}
Public Sub FormEvents_Loading(ByVal sender As Object, ByVal e As LoadingEventArgs)
' Create XPathNavigator positioned at the root of the main data
' source.
Dim myNav As XPathNavigator = Me.MainDataSource.CreateNavigator()
' Select employee field and set value to username.
myNav.SelectSingleNode("//my:employee", Me.NamespaceManager). _
SetValue(System.Environment.UserName)
End Sub
Hinweis
Es muss nicht unbedingt explizit auf die this- oder Me-Schlüsselwörter verwiesen werden, um auf die Member der XmlForm-Klasse im Formularcode zuzugreifen. Beispielsweise können die Codezeilen für den Zugriff auf die MainDataSource-Eigenschaft in den vorigen Beispielen für C# und Visual Basic wie folgt geschrieben werden:
XPathNavigator myNav = MainDataSource.CreateNavigator()
Dim myNav As XPathNavigator = MainDataSource.CreateNavigator()
Durch Verwenden des this- oder des Me-Schlüsselworts beim Schreiben von Code wird jedoch die Anweisungsvervollständigung von IntelliSense erleichtert, die beim Schreiben von Code für Geschäftslogik im FormCode-Modul einer Formularvorlage die Member der XmlForm-Klasse auflistet.
Beim Arbeiten mit verwaltetem Code wird auf die XML-Quelldaten eines Formulars über die MainDataSource-Eigenschaft zugegriffen, die eine Instanz der DataSource-Klasse zurückgibt, die die Hauptdatenquelle des Formulars darstellt. Mithilfe der CreateNavigator-Methode der DataSource-Klasse wird dann eine Instanz der System.Xml.XPath.XPathNavigator-Klasse erstellt, die am Stamm des dem Formular zugrunde liegenden XML-Dokuments positioniert wird. Die Member der XPathNavigator-Klasse können anschließend verwendet werden, um zu den Formulardaten zu navigieren und diese zu lesen und in sie zu schreiben. Weitere Informationen zum Verwenden der XPathNavigator-Klasse im InfoPath-Formularcode finden Sie unter Vorgehensweise: Arbeiten mit den Klassen "XPathNavigator" und "XPathNodeIterator".
Die XmlForm-Klasse stellt auch zusätzliche Eigenschaften bereit, mit denen Informationen über das Formular und das ihm zugrunde liegende XML-Dokument abgerufen werden können. Sie stellt außerdem Methoden zum Ausführen verschiedener Formularaktionen bereit, z. B. Drucken, Speichern oder Absenden. Ereignisse auf Formularebene, z. B. das Laden eines Formulars, das Wechseln von Ansichten oder ein Zusammenführungsvorgang, werden durch die FormEvents-Klasse implementiert. Darüber hinaus werden Ereignisse, die durch Änderungen am zugrunde liegenden XML-Dokument selbst ausgelöst werden, durch die XmlEvents-Klasse implementiert.
Auf das XmlForm-Objekt kann über die XmlFormCollection- und die Window-Klasse im InfoPath-Objektmodell zugegriffen werden. Die folgende Tabelle enthält eine Aufstellung der Orte, an denen das XmlForm-Objekt verfügbar ist.
Name |
Beschreibung |
---|---|
Zugriff über das Application-Objekt mithilfe der XmlForms-Eigenschaft. Stellt die Item-Eigenschaft und die Open()-Methode für den Zugriff auf das XmlForm-Objekt bereit, das sie enthält. |
|
Stellt die XmlForm-Eigenschaft für den Zugriff auf das dem Fenster zugeordnete XmlForm-Objekt bereit. |
In dem mit InfoPath 2003 kompatiblen Objektmodell mit verwaltetem Code (die Typen und Member des Microsoft.Office.Interop.InfoPath.SemiTrust-Namespace), das zusammen mit dem Microsoft Office InfoPath 2003 Toolkit für Visual Studio .NET in InfoPath 2003 Service Pack 1 eingeführt wurde, stellten die folgenden Klassen eine XDocument-Eigenschaft für den Zugriff auf das zugrunde liegende XML-Dokument eines Formulars während Ereignissen bereit: DataDOMEventObject, DocActionEventObject, DocEventObject, DocReturnEventObject und VersionUpgradeEventObject.
Im neuen InfoPath-Objektmodell mit verwaltetem Code (die Typen und Member des Microsoft.Office.InfoPath-Namespace) wird das this-Schlüsselwort (in C#) oder das Me-Schlüsselwort (in Visual Basic) für den Zugriff auf die XmlForm-Klassen und die zugehörigen Member von Ereignishandlern sowie von anderem Code in der Geschäftslogik der Formularvorlage verwendet.
Threadsicherheit
Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.