Freigeben über


Exemplarische Vorgehensweise: Erstellen einer einfachen Formularvorlage mit verwaltetem Code

In Microsoft InfoPath 2010 können Sie Geschäftslogik in Visual Basic oder C# schreiben, indem Sie eine Formularvorlage im InfoPath-Designer öffnen und dann mithilfe eines der Benutzeroberflächenbefehle einen Ereignishandler hinzufügen, durch den die Microsoft Visual Studio Tools for Applications-Entwicklungsumgebung zum Schreiben des Codes geöffnet wird. Standardmäßig werden Formularvorlagenprojekte, die mithilfe Microsoft Visual Studio Tools for Applications erstellt werden, für das Objektmodell mit verwaltetem Code verwendet, das vom Microsoft.Office.InfoPath-Namespace bereitgestellt wird.

In dieser exemplarischen Vorgehensweise wird zunächst veranschaulicht, wie Sie eine einfache Anwendung namens Hello World mit C# oder Visual Basic in der Microsoft Visual Studio Tools for Applications-Entwicklungsumgebung erstellen. Die exemplarische Vorgehensweise wird mit einem Codebeispiel abgeschlossen, das zeigt, wie Sie die UserName-Eigenschaft der User-Klasse verwenden, um den Namen des aktuellen Benutzers abzurufen und ein Steuerelement vom Typ Textfeld mit diesem Wert aufzufüllen.

Voraussetzungen

Zum Abschließen dieser exemplarischen Vorgehensweise mithilfe der Microsoft Visual Studio Tools for Applications-Entwicklungsumgebung benötigen Sie Folgendes:

  • Microsoft InfoPath 2010 mit Microsoft Visual Studio Tools for Applications.

Hello World in Visual Studio-Tools für Anwendungen

In der folgenden exemplarischen Vorgehensweise wird beschrieben, wie Sie in der Microsoft Visual Studio Tools for Applications-Entwicklungsumgebung Code zum Anzeigen eines einfachen Hinweisdialogfelds erstellen können, indem Sie einen Ereignishandler für das Clicked-Ereignis der ButtonEvent-Klasse schreiben, die dem Steuerelement Schaltfläche zugeordnet ist.

Erstellen eines neuen Projekts und Angeben der Programmiersprache

  1. Starten Sie den InfoPath-Designer, und doppelklicken Sie auf die Formularvorlage Leer (InfoPath Editor).

  2. Zum Angeben der zu verwendenden Programmiersprache klicken Sie auf die Office-Schaltfläche, dann auf Formularoptionen, dann in der Liste Kategorie auf Programmierung, und wählen Sie dann in der Dropdownliste Codesprache der Formularvorlage entweder Visual Basic oder C# aus.

    Hinweis

    Die anderen Optionen für die Programmiersprache in der Dropdownliste Codesprache der Formularvorlage dienen der Kompatibilität mit früheren Versionen von InfoPath. Die Optionen C# (InfoPath 2007-kompatibel) und Visual Basic (InfoPath 2007-kompatibel) können Sie für die Vorgehensweisen in diesem Thema verwenden. Wenn Sie die Optionen C# (InfoPath 2003-kompatibel) und Visual Basic (InfoPath 2003-kompatibel) verwenden möchten, lesen Sie bitte die Informationen unter Exemplarische Vorgehensweise: Erstellen und Debuggen einer einfachen Formularvorlage mit dem InfoPath 2003-Objektmodell.

    Jetzt können Sie ein Steuerelement vom Typ Schaltfläche hinzufügen und dessen Ereignishandler erstellen.

Hinzufügen eines Steuerelements vom Typ "Schaltfläche" und eines Ereignishandlers

  1. Klicken Sie in der Gruppe Steuerelemente auf das Steuerelement Schaltfläche, um dieses dem Formular hinzuzufügen.

  2. Doppelklicken Sie auf das Steuerelement Schaltfläche, geben Sie auf der Registerkarte Eigenschaften des Menübands den Text Hallo für die Eigenschaft Etikett ein, und klicken Sie dann auf Benutzerdefinierter Code. Speichern Sie das Formular bei entsprechender Aufforderung, und nennen Sie es HelloWorld.

    Daraufhin wird die Visual Studio-Tools für Anwendungen-Umgebung geöffnet. Der Cursor befindet sich im Ereignishandler für das Clicked-Ereignis des Steuerelements Schaltfläche.

    Jetzt können Sie dem Ereignishandler für die Schaltfläche Formularcode hinzufügen.

Hinzufügen von Code für "Hello World" zum Ereignishandler und Anzeigen einer Vorschau für das Formular

  1. Geben Sie in die Ereignishandlervorlage Folgendes ein:

    MessageBox.Show("Hello World!");
    
    MessageBox.Show("Hello World!")
    

    Der Code für die Formularvorlage sollte wie folgt aussehen:

    using Microsoft.Office.InfoPath;
    using System;
    using System.Windows.Forms;
    using System.Xml;
    using System.Xml.XPath;
    
    namespace HelloWorld
    {
       public partial class FormCode
       {
          public void InternalStartup()
          {
             ((ButtonEvent)EventManager.ControlEvents["CTRL1_5"]).Clicked += new ClickedEventHandler(CTRL1_5_Clicked);
          }
    
          public void CTRL1_5_Clicked(object sender, ClickedEventArgs e)
          {
             MessageBox.Show("Hello World!");
          }
       }
    }
    
    Imports Microsoft.Office.InfoPath
    Imports System
    Imports System.Windows.Forms
    Imports System.Xml
    Imports System.Xml.XPath
    
    Namespace HelloWorld
       Public Class FormCode
          Private Sub InternalStartup(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Startup
             AddHandler DirectCast(EventManager.ControlEvents("CTRL1_5"), ButtonEvent).Clicked, AddressOf CTRL1_5_Clicked
          End Sub
    
          Public Sub CTRL1_5_Clicked(ByVal sender As Object, ByVal e As ClickedEventArgs)
             MessageBox.Show("Hello World!")
          End Sub
       End Class
    End Namespace
    
  2. Wechseln Sie zum InfoPath-Designer-Fenster.

  3. Klicken Sie auf der Registerkarte Start auf die Schaltfläche Vorschau.

  4. Klicken Sie auf dem Formular auf die Schaltfläche Hallo.

    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

  1. Wechseln Sie zurück zum Microsoft Visual Studio Tools for Applications-Fenster.

  2. Klicken Sie auf die graue Leiste links der Zeile:

    MessageBox.Show("Hello World!");
    
    MessageBox.Show("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.

  3. Klicken Sie im Menü Debuggen auf Debuggen starten (oder drücken Sie F5).

  4. Klicken Sie im Fenster Vorschau von InfoPath auf die Schaltfläche Hallo auf dem Formular.

  5. Der Fokus wechselt zum Microsoft Visual Studio Tools for Applications-Code-Editor, und die Haltepunktlinie wird hervorgehoben.

  6. Klicken Sie im Menü Debuggen auf Prozedurschritt (oder drücken Sie UMSCHALT+F8), um das schrittweise Durchlaufen des Codes fortzusetzen.

  7. Der Ereignishandlercode wird ausgeführt, und die Meldung "Hello World!" wird angezeigt.

  8. Klicken Sie auf OK, um zum Microsoft Visual Studio Tools for Applications-Code-Editor zurückzukehren, und klicken Sie dann im Menü Debuggen auf Debuggen beenden (oder drücken Sie STRG+ALT+UNTBR).

Abrufen des aktuellen Benutzernamens

Im folgenden Beispiel wird beschrieben, wie Sie die UserName-Eigenschaft der User-Klasse verwenden, um den Namen des aktuellen Benutzers abzurufen und den Wert eines Steuerelements vom Typ Textfeld mithilfe eines Ereignishandlers für das Loading-Ereignis aufzufüllen.

Das Steuerelement Textfeld wird aufgefüllt, indem eine Instanz der XPathNavigator-Klasse verwendet wird, um den Namen des aktuellen Benutzers in den XML-Knoten zu schreiben, an den das Steuerelement gebunden ist.

Als erstes wird die MainDataSource-Eigenschaft der XmlForm-Klasse aufgerufen, um eine Instanz der DataSource-Klasse abzurufen, die das zugrunde liegende XML-Dokument des Formulars darstellt. Anschließend ruft das DataSource-Objekt die CreateNavigator-Methode auf, die das XPathNavigator-Objekt erstellt und am Stammknoten der Hauptdatenquelle des Formulars positioniert.

Die SelectSingleNode-Methode der XPathNavigator-Klasse wird aufgerufen, um das employee-Feld in der Datenquelle des Formulars aufzurufen. Zum Schluss wird die SetValue-Methode aufgerufen, die den Wert des Felds mit der UserName-Eigenschaft festlegt.

Weitere Informationen zum Arbeiten mit System.Xml in Formularvorlagen mit verwaltetem Code finden Sie unter Vorgehensweise: Arbeiten mit den Klassen "XPathNavigator" und "XPathNodeIterator".

Hinzufügen eines Loading-Ereignishandlers

  1. Öffnen Sie die Formularvorlage "HelloWorld", die Sie in der vorherigen exemplarischen Vorgehensweise im InfoPath-Designer erstellt haben.

  2. Klicken Sie auf der Registerkarte Ansicht auf Felder anzeigen.

  3. Klicken Sie mit der rechten Maustaste auf den Ordner myFields, und klicken Sie dann auf Hinzufügen.

  4. Geben Sie im Feld Name die Bezeichnung employee ein, und klicken Sie dann auf OK.

  5. Ziehen Sie das Feld employee in die Ansicht.

  6. Klicken Sie auf der Registerkarte Entwickler auf Loading-Ereignis.

    Dadurch wird ein Ereignishandler für das Loading-Ereignis erstellt und der Fokus auf diesen Ereignishandler im Code-Editor verschoben.

  7. Geben Sie im Code-Editor Folgendes ein:

    public void FormEvents_Loading(object sender, LoadingEventArgs e)
    {
       XPathNavigator dataSource;
       dataSource = this.MainDataSource.CreateNavigator();
       dataSource.SelectSingleNode(
          "/my:myFields/my:employee", NamespaceManager).SetValue(this.User.UserName);
    }
    
    Public Sub FormEvents_Loading(ByVal sender As Object, ByVal e As LoadingEventArgs)
       Dim dataSource As XPathNavigator
       dataSource = Me.MainDataSource.CreateNavigator
       dataSource.SelectSingleNode( _
          "/my:myFields/my:employee", NamespaceManager).SetValue(Me.User.UserName)
    End Sub
    
  8. Wechseln Sie in das InfoPath-Formularentwurfsfenster, und klicken Sie auf der Registerkarte Start auf die Schaltfläche Vorschau, um eine Vorschau des Formulars anzuzeigen.

    Im Feld employee sollte automatisch Ihr Benutzername eingelesen werden.

Nächste Schritte

Siehe auch

Referenz

XmlForm