Procédure pas à pas : créer un modèle de formulaire de base avec du code

Dans Microsoft InfoPath, vous pouvez écrire une logique métier en Visual Basic ou C# en ouvrant un modèle de formulaire dans le concepteur InfoPath, puis en utilisant l’une des commandes de l’interface utilisateur pour ajouter un gestionnaire d’événements, ce qui ouvre l’environnement de développement Visual Studio 2012 pour l’écriture de votre code. Par défaut, les projets de modèle de formulaire créés à l’aide de Visual Studio 2012 fonctionnent sur le modèle objet avec code managé fourni par l’espace de noms Microsoft.Office.InfoPath .

Cette procédure pas à pas vous montre tout d’abord comment créer une application Hello World simple à l’aide de C# ou Visual Basic dans l’environnement de développement Visual Studio 2012. La procédure pas à pas se termine par un exemple de code qui vous montre comment utiliser la propriété UserName de la classe User pour récupérer le nom de l’utilisateur actuel et remplir un contrôle Zone de texte avec cette valeur.

Prerequisites

Pour effectuer cette procédure pas à pas à l’aide de l’environnement de développement Visual Studio 2012, vous avez besoin des éléments suivants :

  • Microsoft InfoPath avec Visual Studio 2012 installé.

Créer l'application « Hello World » dans Visual Studio Tools for Applications

Dans la procédure pas à pas suivante, vous allez apprendre à écrire du code dans l’environnement de développement Visual Studio 2012 pour afficher une boîte de dialogue d’alerte simple en écrivant un gestionnaire d’événements pour l’événement Clicked de la classe ButtonEvent , qui est associée au contrôle Button .

Créer un projet et spécifier le langage de programmation

  1. Démarrez le Concepteur InfoPath, puis double-cliquez sur le modèle de formulaire Vide (Éditeur InfoPath).

  2. Pour spécifier le langage de programmation à utiliser, cliquez sur le bouton Microsoft Office, cliquez sur Options de formulaire, cliquez sur Programmation dans la liste Catégorie, puis sélectionnez Visual Basic ou C# dans la liste déroulante Langage de code du modèle de formulaire.

    Remarque

    Les autres options de langage de programmation dans la liste déroulante Langage de code du modèle de formulaire indiquent la compatibilité avec les versions précédentes d'InfoPath. Les options C# (compatibles InfoPath 2007) et Visual Basic (compatible InfoPath 2007) fonctionnent avec les procédures mentionnées dans cette rubrique. Cependant, pour utiliser les options C# (compatible InfoPath 2003) et Visual Basic (compatible InfoPath 2003), voir Procédure pas à pas : Création et débogage d'un modèle de formulaire de base avec le modèle objet InfoPath 2003.

    Vous pouvez à présent ajouter un contrôle Bouton et créer son gestionnaire d'événements.

Ajouter un contrôle Bouton et un gestionnaire d'événements

  1. Dans le groupe Contrôles, cliquez sur le contrôle Bouton pour l'ajouter au formulaire.

  2. Double-cliquez sur le contrôle Bouton, tapez Hello pour la propriété Étiquette sous l'onglet Propriétés du ruban, puis cliquez sur Code personnalisé. Lorsque vous y êtes invité, enregistrez le formulaire et nommez-le HelloWorld.

    Cela ouvre l’environnement Visual Studio Tools for Applications avec le curseur dans le gestionnaire d’événements pour l’événement Clicked du contrôle Button.

    Vous pouvez maintenant ajouter du code de formulaire au gestionnaire d'événements du bouton.

Ajouter le code « Hello World » au gestionnaire d'événements et afficher un aperçu du formulaire

  1. Dans le squelette du gestionnaire d'événements, tapez :

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

    Le code de votre modèle de formulaire doit se présenter ainsi :

     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. Basculez dans la fenêtre Concepteur InfoPath.

  3. Cliquez sur le bouton Aperçu sous l'onglet Accueil.

  4. Cliquez sur le bouton Hello du formulaire.

    Un message s'affiche avec le texte « Hello World! ».

    La procédure suivante illustre l'ajout de points d'arrêt pour le débogage dans le code de votre formulaire.

Débogage de code de formulaire

  1. Revenez à la fenêtre Visual Studio 2012.

  2. Cliquez sur la barre grise située à gauche de la ligne :

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

    Un cercle rouge s'affiche et la ligne de code est mise en surbrillance pour indiquer que l'exécution marquera une pause à ce point d'arrêt dans votre code de formulaire.

  3. Dans le menu Débogage, cliquez sur Démarrer le débogage ou appuyez sur F5.

  4. Dans la fenêtre Aperçu d'InfoPath, cliquez sur le bouton Hello du formulaire.

  5. L’éditeur de code Visual Studio 2012 reçoit le focus et la ligne de point d’arrêt est mise en surbrillance.

  6. Dans le menu Débogage, cliquez sur Pas à pas principal (ou appuyez sur Maj+F8 pour continuer pas à pas dans le code).

  7. Le gestionnaire d'événements est exécuté, et le message « Hello World! » s'affiche.

  8. Cliquez sur OK pour revenir à l’éditeur de code Visual Studio 2012, puis cliquez sur Arrêter le débogage dans le menu Déboguer (ou appuyez sur Ctrl+Alt+Arrêt).

Obtention du nom de l’utilisateur actuel

Dans l’exemple suivant, vous allez apprendre à utiliser la propriété UserName de la classe User pour récupérer le nom de l’utilisateur actuel et remplir la valeur d’un contrôle Zone de texte à l’aide d’un gestionnaire d’événements pour l’événement Loading .

Le remplissage du contrôle Zone de texte s’effectue à l’aide d’un instance de la classe XPathNavigator pour écrire le nom de l’utilisateur actuel dans le nœud XML auquel le contrôle est lié.

Tout d’abord, la propriété MainDataSource de la classe XmlForm est appelée pour récupérer un instance de la classe DataSource qui représente le document XML sous-jacent du formulaire. L’objet DataSource appelle ensuite la méthode CreateNavigator, qui crée l’objet XPathNavigator et le positionne au niveau du nœud racine de la source de données main du formulaire.

La méthode SelectSingleNode de la classe XPathNavigator est appelée pour sélectionner le champ employé dans la source de données du formulaire. Enfin, la méthode SetValue est appelée pour définir la valeur du champ avec la propriété UserName .

Pour plus d’informations sur l’utilisation deSystem.Xml dans les modèles de formulaire en code managé, consultez Utiliser les classes XPathNavigator et XPathNodeIterator.

Ajouter un gestionnaire d'événements Chargement en cours (Loading)

  1. Ouvrez le modèle de formulaire HelloWorld que vous avez créé dans la procédure pas à pas précédente dans le Concepteur InfoPath.

  2. Sous l'onglet Affichage, sélectionnez Afficher les champs.

  3. Cliquez avec le bouton droit sur le dossier mesChamps, puis cliquez sur Ajouter.

  4. Dans Nom, tapez employee, puis cliquez sur OK.

  5. Faites glisser le champ Employé dans la vue.

  6. Sous l'onglet Développeur, cliquez sur Événement Chargement en cours (Loading).

    Cela crée un gestionnaire d’événements pour l’événement Loading et déplace le focus sur ce gestionnaire d’événements dans l’éditeur de code.

  7. Dans l'éditeur de code, tapez le code suivant :

     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. Basculez dans la fenêtre de création de formulaire d'InfoPath, puis cliquez sur le bouton Aperçu de l'onglet Accueil pour afficher le formulaire.

    Le champ employé doit être renseigné automatiquement avec votre nom d'utilisateur.

Prochaines étapes

Voir aussi