Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Thema enthält eine exemplarische Vorgehensweise zum Erstellen einer einfachen InfoPath-Formularvorlage mit verwaltetem Code, die mit dem InfoPath 2003-kompatiblen Objektmodell funktioniert, das vom Microsoft.Office.Interop.InfoPath.SemiTrust-Namespace bereitgestellt wird.
Hello World
Im folgenden Beispiel erfahren Sie, wie Sie mithilfe der Alert-Methode des InfoPath 2003-kompatiblen Objektmodells ein einfaches Warnungsdialogfeld anzeigen.
Erstellen einer neuen InfoPath-Formularvorlage, die das InfoPath 2003-kompatible Objektmodell verwendet
Erstellen Sie eine neue Formularvorlage, die mit dem InfoPath 2003-kompatiblen Objektmodell funktioniert, wie unter Erstellen einer Formularvorlage mithilfe des InfoPath 2003-Objektmodells beschrieben.
Geben Sie dem Formularvorlagenprojekt den Namen HelloWorld, und speichern Sie es.
Das Projektsystem erstellt Code- und Projektdateien und öffnet dann eine leere Formularvorlage im InfoPath-Entwurfsmodus. Jetzt können Sie Ereignishandler hinzufügen.
Hinzufügen einer Schaltfläche mit einem OnClick-Ereignishandler
Klicken Sie auf der Registerkarte Start im Abschnitt Steuerelemente auf das Steuerelement Schaltfläche, um dieses in die Ansicht einzufügen.
Klicken Sie mit der rechten Maustaste auf das Steuerelement, und klicken Sie dann auf Schaltflächeneigenschaften.
Ändern Sie die Bezeichnung in Warnung.
Ändern Sie die ID in AlertID.
Klicken Sie auf Formularcode bearbeiten.
Ein Ereignishandlergerüst für das OnClick-Ereignis wird erstellt, und der Fokus wird auf den Code-Editor in Visual Studio 2012 verschoben. Weitere Informationen zum Arbeiten mit Ereignishandlern finden Sie unter Hinzufügen eines Ereignishandlers mithilfe des InfoPath 2003-Objektmodells.
Jetzt können Sie dem Ereignishandler für die Schaltfläche Formularcode hinzufügen.
Hinzufügen von Formularcode zum Ereignishandler
Geben Sie im OnClick-Ereignishandler den folgenden Code ein:
thisXDocument.UI.Alert("Hello World!");thisXDocument.UI.Alert("Hello World!")Beachten Sie, dass nach der Eingabe jedes Punktes in der Codezeile eine Microsoft IntelliSense-Dropdownliste angezeigt wird. Der gesamte Ereignishandler sollte wie folgt aussehen:
[InfoPathEventHandler(MatchPath="AlertID", EventType=InfoPathEventType.OnClick)] public void AlertID_OnClick(DocActionEvent e) { thisXDocument.UI.Alert("Hello World!"); }<InfoPathEventHandler(MatchPath:="AlertID", EventType:=InfoPathEventType.OnClick)> Public Sub AlertID_OnClick(ByVal e As DocActionEvent) thisXDocument.UI.Alert("Hello World!") End SubHinweis
Alternativ zur Verwendung der Alert-Methode können Sie die MessageBox.Show-Methode des System.Windows.Forms-Namespace verwenden, um ein Meldungsfeld anzuzeigen. Dazu müssen Sie einen Verweis auf die System.Windows.Forms-Assembly hinzufügen, oder
Imports System.Windows.Formszu den Direktiven am Anfang der Codedatei hinzufügenusing System.Windows.Forms;und dann eine Codezeile wie die folgende eingeben:MessageBox.Show("Hello World!); or MessageBox.Show("Hello World!)Wechseln Sie zum InfoPath-Entwurfsmodusfenster, und klicken Sie dann auf der Registerkarte Start auf die Schaltfläche Vorschau.
Klicken Sie imVorschaufenster auf die Schaltfläche Alert.
Ein Meldungsfeld mit dem Text "Hello World!" wird angezeigt.
Im nächsten Verfahren wird gezeigt, wie Sie dem Formularcode Haltepunkte für das Debuggen hinzufügen können.
Debuggen von Formularcode
Klicken Sie im Code-Editor auf die graue Leiste links neben der Zeile:
thisXDocument.UI.Alert("Hello World!");thisXDocument.UI.Alert("Hello World!")Ein roter Kreis wird angezeigt, und die Codezeile wird hervorgehoben, um darauf hinzuweisen, dass die Laufzeit an diesem Haltepunkt im Formularcode angehalten wird.
Klicken Sie im Menü Debuggen auf Debuggen starten (oder drücken Sie F5).
Klicken Sie imVorschaufenster von InfoPath auf die Schaltfläche Alert.
Der Fokus wechselt zum Code-Editor, und die Haltepunktlinie wird hervorgehoben.
Klicken Sie im Menü Debuggen auf Prozedurschritt (oder drücken Sie UMSCHALT+F8), um das schrittweise Durchlaufen des Codes fortzusetzen.
Der Code der Warnungsmethode wird ausgeführt, und die Warnung "Hallo Welt!" wird im InfoPath-Vorschaufenster angezeigt.
Abrufen des aktuellen Benutzernamens
Mithilfe der .NET Framework-Klassen können Sie auf Funktionalität zugreifen, die in Skripts nicht ohne weiteres verfügbar war. In diesem Beispiel erfahren Sie, wie der Name des aktuellen Benutzers über die .NET Framework-Klassen abgerufen werden kann.
Hinzufügen eines OnLoad-Ereignishandlers
Öffnen Sie das InfoPath-Projekt "HelloWorld", das Sie zuvor erstellt haben.
Klicken Sie auf der Registerkarte Ansicht auf Felder anzeigen.
Klicken Sie mit der rechten Maustaste auf den Knoten myFields, und klicken Sie dann auf Hinzufügen.
Geben Sie employee im Feld Name ein, und klicken Sie dann auf OK.
Ziehen Sie den Knoten employee in die Ansicht.
Klicken Sie auf der Registerkarte Entwicklertools auf On Load-Ereignis.
Dadurch wird ein Ereignishandler für das OnLoad-Ereignis erstellt, und der Fokus wird auf den Code-Editor verschoben. Der Code in diesem Ereignishandler wird bei jedem Laden des Formulars aufgerufen. Im nächsten Verfahren wird gezeigt, wie dem Ereignishandler Formularcode zum Abrufen des Benutzernamens hinzugefügt wird.
Hinzufügen von Formularcode
Geben Sie im OnLoad-Ereignishandler den folgenden Code ein:
// Store an XML DOM node as a local variable. IXMLDOMNode nodeEmployee = thisXDocument.DOM.selectSingleNode("my:myFields/my:employee"); if(nodeEmployee != null) { if(nodeEmployee.text == "") { // If the employee name is blank when the form is loaded, // populate the employee node with the current user name. nodeEmployee.text = System.Environment.UserName; } }// Store an XML DOM node as a local variable. Dim nodeEmployee As IXMLDOMNode nodeEmployee = thisXDocument.DOM.selectSingleNode("my:myFields/my:employee"); If Not(nodeEmployee Is Nothing) Then If(nodeEmployee.text = "") Then // If the employee name is blank when the form is loaded, // populate the employee node with the current user name. nodeEmployee.text = System.Environment.UserName End If End IfKompilieren Sie das Formular, und zeigen Sie eine Vorschau davon an.
Das Textfeld employee sollte jetzt mit Ihrem Benutzername aufgefüllt sein.
Informationen zum Bereitstellen einer Formularvorlage mit verwaltetem Code finden Sie unter Bereitstellen von InfoPath-Formularvorlagen mit Code. Informationen zum InfoPath-Objektmodell und allgemeinen Programmieraufgaben in Formularvorlagen mit verwaltetem Code, die mit dem InfoPath 2003-kompatiblen Objektmodell funktionieren, finden Sie unter Grundlegendes zum InfoPath 2003-Objektmodell.