Vorgehensweise: Anzeigen von Warnungen und Dialogfeldern mit dem InfoPath 2003-Objektmodell

Beim Schreiben von Code, um die Funktionalität einer Formularvorlage zu erweitern, die das InfoPath 2003-Objektmodell verwendet, empfiehlt es sich häufig, dem Benutzer Informationen in einem Dialogfeld bereitzustellen. In InfoPath erfolgt das programmgesteuerte Anzeigen eines Dialogfelds sowie zugehöriger Benutzeroberflächenelemente mithilfe der Methoden der UIObject-Schnittstelle.

Übersicht über die UIObject-Schnittstelle

Die UIObject-Schnittstelle stellt die folgenden Methoden bereit, die Formularentwickler verwenden können, damit unterschiedliche Arten von Dialogfeldern für InfoPath-Benutzer angezeigt werden, wenn sie ein Formular ausfüllen.

Name Beschreibung

Alert

Zeigt ein einfaches Meldungsfeld an, das eine bestimmte Meldungszeichenfolge enthält. Diese Methode sollte dann verwendet werden, wenn keine Benutzereingaben erforderlich sind und nur eine Meldung angezeigt werden muss. Das Dialogfeld wird durch Klicken auf die Schaltfläche OK geschlossen.

Confirm

Zeigt ein Meldungsfeld mit Schaltflächen für Benutzereingaben an. Der zurückgegebene Wert entspricht einer der aufgelisteten XdConfirmChoice-Konstanten.

SetSaveAsDialogFileName

Legt den Standarddateinamen für ein Formular im Dialogfeld Speichern unter fest.

SetSaveAsDialogLocation

Legt den Ausgangsort fest, an dem das Dialogfeld Speichern unter beim Öffnen mit der Navigation beginnt.

ShowMailItem

Erstellt eine neue E-Mail-Nachricht in der E-Mail-Standardanwendung, wobei das derzeit geöffnete Formular an die Nachricht angefügt wird.

ShowModalDialog

Zeigt ein modales Dialogfeld basierend auf der angegebenen HTML-Datei und positionellen Argumenten an. Diese Methode sollte verwendet werden, wenn mehr als eine einfache Meldung für Benutzer angezeigt werden soll und Daten von den Benutzern zurückgegeben werden müssen (abgesehen von der einfachen Bestätigung durch die Schaltflächen Ja | Nein | Abbrechen, die von der Confirm-Methode angezeigt werden).

ShowSignatureDialog

Zeigt das integrierte Dialogfeld Digitale Signaturen an.

Verwenden der UIObject-Schnittstelle

Der Zugriff auf die UIObject-Schnittstelle erfolgt über die UI-Eigenschaft der XDocument-Schnittstelle, auf die wiederum über die in der _Startup-Methode der Formularcodeklasse initialisierten thisXDocument-Variablen zugegriffen wird. Im folgenden Beispiel wird die Verwendung der Methoden ShowMailItem und Alert der UIObject-Schnittstelle veranschaulicht.

thisXDocument.UI.ShowMailItem("someone@example.com","", "", 
   "Updated Form", "Here is the updated form that you requested.");

thisXDocument.UI.Alert("The e-mail message has been created.");
thisXDocument.UI.ShowMailItem("someone@example.com", "", "", _
   "Updated Form", "Here is the updated form that you requested.")

thisXDocument.UI.Alert("The e-mail message has been created.")

Verwenden der ShowModalDialog-Methode

In diesem Beispiel wird die Verwendung der ShowModalDialog -Methode der UIObject-Schnittstelle zum Anzeigen eines benutzerdefinierten Dialogfelds, das in der HTML-Datei "show.html" definiert ist, veranschaulicht:

public void CTRL1_5_OnClick(DocActionEvent e)
{
   // Write your code here.
   thisXDocument.UI.ShowModalDialog(
      "show.html",(object)thisXDocument,200,450,50,50);
}
Public Sub CTRL1_5_OnClick(ByVal e As DocActionEvent)
   ' Write your code here.
   thisXDocument.UI.ShowModalDialog( _
      "show.html", _
      DirectCast(thisXDocument, Object), 200, 450, 50, 50)
End Sub

Sowohl das Beispiel für Visual C# als auch das für Visual Basic ist von einer HTML-Datei namens "show.html" abhängig, die das von der ShowModalDialog-Methode aufgerufene Dialogfeld definiert. In dieser HTML-Datei werden einige Daten aus dem Formular sowie ein Textfeld für den Benutzer angezeigt, in das der Benutzer einen Wert eingeben soll. Der Wert im Textfeld wird beim Schließen des Dialogfelds an das Formular zurückgegeben.

<HTML>
   <HEAD>
      <script language="JScript">
function BtnClick()
{
   xdocument = window.dialogArguments;
   myXml = xdocument.DOM.xml
   aForm = oForm.elements;
   aForm.textBox.value = myXml;
}
      </script>
   </HEAD>
   <BODY>
      <H1><FONT face="Arial">This is a modal dialog box</FONT> &nbsp;
      </H1>
      <BUTTON onclick="BtnClick()" id="BUTTON1" type="button">
         Get XML DOM
      </BUTTON>
      <FORM ID="oForm">
         <INPUT Type="text" name="textBox">
      </FORM>
   </BODY>
</HTML>
Wichtig:

Die ShowModal-Methode setzt zur Ausführung oder Vorschau die Sicherheitsebene "Voll vertrauenswürdig" voraus. Weitere Informationen hierzu finden Sie unter Vorgehensweise: Anzeigen einer Vorschau und Debuggen von Formularvorlagen mit verwaltetem Code, die vollständig vertrauenswürdig sein müssen.

Verwenden von Windows Form für ein Dialogfeld

Statt einer HTML-Datei zum Anzeigen des Inhalts eines Dialogfelds (wie im vorherigen Beispiel dargestellt) können Sie auch Windows Form als Dialogfeld aus dem InfoPath-Formular heraus anzeigen. In diesem Beispiel wird die Anzeige von Windows Form als benutzerdefiniertes Dialogfeld über eine Schaltfläche namens ShowDialog in einem InfoPath-Formular angezeigt. Dabei ist die Verwendung der UIObject-Schnittstelle oder sonstiger Member des InfoPath-Objektmodells nicht erforderlich.

Hinweis:

Sie können Windows Form nicht erstellen und einem InfoPath-Formularvorlagenprojekt hinzufügen, das mithilfe von Microsoft Visual Studio Tools für Anwendungen (VSTA) erstellt wurde. Sie müssen Microsoft Visual Studio 2005 Tools für 2007 Microsoft Office System und Visual Studio 2005 oder Visual Studio 2008 mit Visual Studio Tools für Office verwenden, um Windows Form zu erstellen und einem Formularvorlagenprojekt hinzuzufügen.

public void ShowDialog_OnClick(DocActionEvent e)
{
   // Instantiate and show Form1.
   Form1 myform = new Form1();
   myform.Show();
}
Public Sub ShowDialog_OnClick(ByVal e As DocActionEvent)
   ' Instantiate and show Form1.
   Dim MyForm As New Form1()
   MyForm.Show()
End Sub

Sowohl das Beispiel für Visual C# als auch für Visual Basic basiert auf Windows Form names "Form1", durch das das vom Ereignishandler für die Schaltfläche ShowDialog auf dem InfoPath-Formular heraus aufgerufene Dialogfeld definiert wird. Fügen Sie dem InfoPath-Projekt das Formular "Form1" über das folgende Verfahren hinzu.

Hinzufügen von Windows Form zu einem InfoPath-Projekt

  1. Klicken Sie im****Projektmappen-Explorer mit der rechten Maustaste auf das Formularcodeprojekt (projectnameFormCode), zeigen Sie auf Hinzufügen, und klicken Sie dann auf Windows Form hinzufügen.

  2. Benennen Sie das Formular im Dialogfeld Neues Element hinzufügen, und klicken Sie dann auf Öffnen.

  3. Ziehen Sie aus der****Toolbox das Steuerelement Schaltfläche auf das Formular.

  4. Doppelklicken Sie auf die Schaltfläche, und fügen Sie dann den folgenden Code zum Ereignishandler der Schaltfläche hinzu.

   // Close the form.
   this.Close();
   ' Close the form.
   Me.Close()