Freigeben über


Exemplarische Vorgehensweise: Erstellen einer einfachen Formularvorlage mit verwaltetem Code

Beim Verwenden von Microsoft Office InfoPath 2003 zum Schreiben von Geschäftslogik in einer Sprache mit verwaltetem Code (Visual Basic oder C#) verwenden Sie ein InfoPath-Projekt, das mit Microsoft Visual Studio .NET 2003 erstellt wurde, und Microsoft Office InfoPath 2003 Toolkit für Visual Studio .NET oder Visual Studio 2005 Tools for Microsoft Office System mit Microsoft Office InfoPath 2003 Toolkit für Visual Studio 2005. Beide dieser Entwicklungsumgebungen mit verwaltetem Code hängen vom COM-Interop-Objektmodell mit verwaltetem Code ab und unterstützen nur dieses Objektmodell, das vom Microsoft.Office.Interop.InfoPath.SemiTrust-Assembly bereitgestellt wird.

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

Alternativ können Sie, wenn Visual Studio 2005 mit Microsoft Visual Studio 2005 Tools für 2007 Microsoft Office System oder Visual Studio 2008 mit Visual Studio Tools für Office installiert ist, aus Visual Studio 2005 heraus beginnen, ein InfoPath-Formularvorlagenprojekt zu erstellen und dann mithilfe der InfoPath-Entwurfsmodusintegration innerhalb der Visual Studio 2005-Umgebung das Formular zu entwerfen und Geschäftslogik hinzufügen.

In der ersten exemplarischen Vorgehensweise wird gezeigt, wie Sie eine einfache Anwendung namens Hello World mithilfe von C# oder Visual Basic in den VSTA- und Visual Studio-Entwicklungsumgebungen erstellen. Die exemplarische Vorgehensweise endet mit einem Codebeispiel, in dem gezeigt wird, wie Sie die System.Environment.UserName-Eigenschaft 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 VSTA-Entwicklungsumgebung benötigen Sie Folgendes:

  • Microsoft Office InfoPath 2007 mit Microsoft Visual Studio Tools für Anwendungen (VSTA).

Zum Abschließen dieser exemplarischen Vorgehensweise mithilfe der Visual Studio-Entwicklungsumgebung mit InfoPath-Entwurfsmodusintegration benötigen Sie Folgendes:

  • Microsoft Office InfoPath 2007

  • Microsoft Visual Studio 2005 mit Microsoft Visual Studio 2005 Tools für 2007 Microsoft Office System oder Visual Studio 2008 mit Visual Studio Tools für Office

Hinweis:

Weitere Informationen zum Downloaden und Installieren von Microsoft Visual Studio 2005 Tools für 2007 Microsoft Office System erhalten Sie im InfoPath-Entwicklerportal.

Hello World in VSTA

In der folgenden exemplarischen Vorgehensweise wird beschrieben, wie Sie ein einfaches Hinweisdialogfeld anzeigen können, indem Sie einen Ereignishandler für das Clicked-Ereignis der ButtonEvent-Klasse schreiben, die dem Steuerelement Schaltfläche zugeordnet ist. Bei diesen Verfahren wird davon ausgegangen, dass Sie die Microsoft Visual Studio Tools für Anwendungen (VSTA)-Entwicklungsumgebung verwenden.

Erstellen eines neuen Projekts und Angeben der Programmiersprache (Visual Studio Tools for Applications)

  1. Starten Sie InfoPath.

  2. Klicken Sie im Dialogfeld Ein Formular ausfüllen unter Ein Formular entwerfen auf Eine Formularvorlage entwerfen.

    Hinweis:

    Wenn InfoPath bereits ausgeführt wird, klicken Sie im Menü Datei auf Ein Formular entwerfen, um das Dialogfeld Ein Formular entwerfen anzuzeigen.

  3. Klicken Sie im Dialogfeld Eine Formularvorlage entwerfen auf Formularvorlage, klicken Sie auf Leer, deaktivieren Sie das Kontrollkästchen Nur browserkompatible Features aktivieren, und klicken Sie dann auf OK.

  4. Klicken Sie im Menü Extras auf Formularoptionen.

  5. Klicken Sie in der Liste Kategorie auf Programmierung, wählen Sie in der Dropdownliste Codesprache der Formularvorlage entweder Visual Basic oder C# aus, und klicken Sie dann auf OK.

    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 im Aufgabenbereich Formularentwurf auf Steuerelemente.

  2. Ziehen Sie ein Steuerelement vom Typ Schaltfläche auf das Formular.

  3. Doppelklicken Sie auf das Steuerelement Schaltfläche, geben Sie Hallo für die Beschriftungs-Eigenschaft ein, und klicken Sie dann auf Formularcode bearbeiten. Speichern Sie das Formular, wenn Sie dazu aufgefordert werden, und nennen Sie es HelloWorld.

    Daraufhin wird die Visual Studio Tools for Applications-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-Entwurfsmodusfenster.

  3. Klicken Sie in der Symbolleiste Standard auf die Schaltfläche Vorschau.

  4. Klicken Sie auf die Schaltfläche Hello.

    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 VSTA-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****Vorschaufenster von InfoPath auf die Schaltfläche Hello.

  5. Der Fokus wechselt zum Editor für VSTA-Code, und die Haltepunktlinie wird hervorgehoben.

  6. Klicken Sie im Menü Debuggen auf Prozedurschritt (oder drücken Sie F10), 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 Editor für VSTA-Code zurückzukehren, und klicken Sie dann im Menü Debuggen auf Debuggen beenden (oder drücken Sie STRG+ALT+UNTBR).

Hello World in Visual Studio mit InfoPath-Entwurfsmodusintegration

In der folgenden exemplarischen Vorgehensweise wird gezeigt, wie dasselbe Beispiel für Hello World wie in der vorherigen exemplarischen Vorgehensweise geschrieben wird. Hierbei wird aber Visual Studio 2005 mit aktivierter InfoPath-Entwurfsmodusintegration durch Installieren von Microsoft Visual Studio 2005 Tools für 2007 Microsoft Office System oder Visual Studio 2008 mit Visual Studio Tools für Office verwendet.

Erstellen eines neuen Projekts und Angeben der Programmiersprache (Visual Studio)

  1. Starten Sie Visual Studio.

  2. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

  3. Erweitern Sie unter Projekttypen den Ordner Visual C#, klicken Sie auf Office (in Visual Studio 2008, klicken Sie dann auf 2007), und klicken Sie dann auf InfoPath-Formularvorlage.

    Alternativ können Sie auch den Ordner Andere Sprachen erweitern. Erweitern Sie dann den Ordner Visual Basic, klicken Sie auf Office (in Visual Studio 2008, klicken Sie dann auf 2007), und klicken Sie dann auf InfoPath-Formularvorlage.

  4. Nennen Sie das Projekt HelloWorld, und klicken Sie dann auf OK.

  5. Klicken Sie im Dialogfeld Ein Formular entwerfen auf Formularvorlage, klicken Sie auf Leer, und klicken Sie dann auf OK.

    Der integrierte InfoPath-Formularvorlagen-Designer wird auf einer Registerkarte mit der Beschriftung manifest.xsf [Entwurf] angezeigt.

    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

  • Klicken Sie im Aufgabenbereich Formularentwurf auf Steuerelemente.
Hinweis:

Wenn der Aufgabenbereich Formularentwurf nicht sichtbar wird, klicken Sie im Menü Ansicht auf Formularentwurf.

  1. Ziehen Sie ein Steuerelement vom Typ Schaltfläche aus der****Toolbox auf das Formular.

  2. Doppelklicken Sie auf das Steuerelement Schaltfläche, geben Sie Hallo für die Beschriftungs-Eigenschaft ein, und klicken Sie dann auf Formularcode bearbeiten. Speichern Sie das Formular, wenn Sie dazu aufgefordert werden.

    Dadurch wird das Fenster für den Code-Editor 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. Klicken Sie im Menü Debuggen auf Debuggen starten (oder drücken Sie F5).

    Das****Vorschaufenster von InfoPath wird angezeigt.

  3. Klicken Sie auf die Schaltfläche Hello.

    Ein Meldungsfeld mit dem Text "Hello World!" wird angezeigt.

  4. Klicken Sie auf OK, und klicken Sie dann auf der Symbolleiste Standard auf die Schaltfläche Vorschau schließen, um zu Visual Studio zurückzukehren.

    Im nächsten Verfahren wird gezeigt, wie Sie dem Formularcode Haltepunkte für das Debuggen hinzufügen können.

Debuggen von Formularcode

  1. Klicken Sie auf die Registerkarte FormCode.cs oder FormCode.vb, um zum Code-Editor zurückzukehren.

  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****Vorschaufenster von InfoPath auf die Schaltfläche Hello.

  5. Der Fokus wechselt zum Code-Editor, und die Haltepunktlinie wird hervorgehoben.

  6. Klicken Sie im Menü Debuggen auf Prozedurschritt (oder drücken Sie F10), 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 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

Mithilfe der .NET Framework-Klassen können Sie Zugriff auf zusätzliche Funktionalität erhalten, die beim Arbeiten mit in Skript geschriebener Geschäftslogik nicht einfach verfügbar ist. Im folgenden Beispiel wird beschrieben, wie Sie die UserName-Eigenschaft der Environment-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 Auffüllen des Steuerelements Textfeld erfolgt mithilfe von zwei Instanzen der XPathNavigator-Klasse.

Von der ersten Instanz wird die MainDataSource-Eigenschaft der XmlForm-Klasse verwendet, um eine Instanz der DataSource-Klasse abzurufen, die das dem Formular zugrunde liegende XML-Dokument darstellt. Von dieser Instanz der DataSource-Klasse wird dann die CreateNavigator-Methode verwendet, um XPathNavigator am Stammknoten des XML-Dokuments zu positionieren.

Die zweite Instanz von XPathNavigator wird im Feld "employee" im XML-Dokument platziert, indem die erste Instanz verwendet wird. Anschließend wird die SetValue-Methode der XPathNavigator-Klasse verwendet, um den Wert des Felds mit der UserName-Eigenschaft festzulegen.

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 das Projekt "HelloWorld", das Sie in der vorherigen exemplarischen Vorgehensweise erstellt haben.

    Wenn Sie in InfoPath mit Microsoft Visual Studio Tools für Anwendungen (VSTA) arbeiten, starten Sie InfoPath und öffnen das Formular im Entwurfsmodus in InfoPath. Wenn Sie mit Visual Studio 2005 mit Microsoft Visual Studio 2005 Tools für 2007 Microsoft Office System oder mit Visual Studio 2008 mit Visual Studio Tools für Office arbeiten, starten Sie Visual Studio und öffnen das Projekt.

  2. Klicken Sie im Menü Ansicht auf Datenquelle.

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

  4. Geben Sie employee in das Feld Name ein, und klicken Sie dann auf OK.

  5. Ziehen Sie das Feld employee in die Ansicht.

  6. Wenn Sie in InfoPath arbeiten, klicken Sie im Menü Extras auf Programmierung und klicken dann auf Loading-Ereignis.

    Wenn Sie in Visual Studio arbeiten, klicken Sie im Menü Einfügen auf Ereignis und klicken dann 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)
    {
       System.Xml.XPath.XPathNavigator root, user;
       root = this.MainDataSource.CreateNavigator();
       user = root.SelectSingleNode("//my:employee", this.NamespaceManager);
       user.SetValue(System.Environment.UserName);
    }
    
    Public Sub FormEvents_Loading(ByVal sender As Object, ByVal e As LoadingEventArgs)
       Dim root, user As System.Xml.XPath.XPathNavigator
       root = Me.MainDataSource.CreateNavigator
       user = root.SelectSingleNode("//my:employee", Me.NamespaceManager)
       user.SetValue(System.Environment.UserName)
    End Sub
    
  8. Wenn Sie in Microsoft Visual Studio Tools für Anwendungen (VSTA) arbeiten, schalten Sie auf das InfoPath-Formularentwurfsfenster um. Klicken Sie dann auf die Schaltfläche Vorschau, um eine Vorschau des Formulars anzuzeigen.

    Wenn Sie in Visual Studio arbeiten, klicken Sie im Menü Debuggen auf Debuggen starten (oder drücken Sie F5), um eine Vorschau des Formulars anzuzeigen.

Nächste Schritte

Siehe auch

Referenz

XmlForm