Procédure pas à pas : ajouter des contrôles à un document au moment de l’exécution dans un complément VSTO

Vous pouvez ajouter des contrôles à n’importe quel document Microsoft Bureau Word ouvert à l’aide d’un complément VSTO. Cette procédure pas à pas montre comment utiliser le ruban pour permettre aux utilisateurs d’ajouter un Button ou un RichTextContentControl document.

S’applique à : les informations contenues dans cette rubrique s’appliquent aux projets de compléments VSTO pour Word 2010. Pour plus d’informations, consultez Fonctionnalités disponibles par type d’application et de projet Office.

Cette procédure pas à pas décrit les tâches suivantes :

  • Création d’un projet de complément VSTO Word.

  • Mise à disposition d’une interface utilisateur permettant d’ajouter des contrôles au document.

  • Ajout de contrôles au document au moment de l’exécution.

  • Suppression de contrôles dans le document.

    Remarque

    Il est possible que pour certains des éléments de l'interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d’informations, consultez Personnaliser l’IDE.

Prérequis

Vous devez disposer des éléments suivants pour exécuter cette procédure pas à pas :

Créer un projet de complément Word

Commencez par créer un projet de complément VSTO Word.

Pour créer un projet de complément VSTO Word

  1. Créez un projet de complément VSTO pour Word avec le nom WordDynamicControls. Pour plus d’informations, consultez Guide pratique pour créer des projets Bureau dans Visual Studio.

  2. Ajoutez une référence à l’assembly Microsoft.Office.Tools.Word.v4.0.Utilities.dll . Cette référence est obligatoire pour ajouter par programmation un contrôle Windows Forms au document, plus loin dans cette procédure pas à pas.

Fournir une interface utilisateur pour ajouter des contrôles à un document

Ajoutez un onglet personnalisé au ruban dans Word. Les utilisateurs peuvent cocher des cases sous l’onglet pour ajouter des contrôles à un document.

Pour fournir une interface utilisateur permettant d’ajouter des contrôles à un document

  1. Dans le menu Projet , cliquez sur Ajouter un nouvel élément.

  2. Dans la boîte de dialogue Ajouter un nouvel élément , sélectionnez Ruban (Concepteur visuel).

  3. Remplacez le nom du nouveau ruban par MyRibbon, puis cliquez sur Ajouter.

    Le fichier MyRibbon.cs ou MyRibbon.vb s'ouvre dans le Concepteur de ruban et affiche un onglet et un groupe par défaut.

  4. Dans le Concepteur de ruban, cliquez sur le groupe group1 .

  5. Dans la fenêtre Propriétés , affectez Ajouter des contrôles comme propriété Étiquette de group1.

  6. Sous l’onglet Contrôles de ruban Office de la Boîte à outils, faites glisser un contrôle CheckBox sur group1.

  7. Cliquez sur CheckBox1 pour le sélectionner.

  8. Dans la fenêtre Propriétés , changez les propriétés suivantes.

    Propriété Valeur
    Nom addButtonCheckBox
    Étiquette Bouton Ajouter
  9. Ajoutez une deuxième case à cocher pour group1, puis modifiez les propriétés suivantes.

    Propriété Valeur
    Nom addRichTextCheckBox
    Étiquette Ajouter un contrôle de texte enrichi
  10. Dans le Concepteur de ruban, double-cliquez sur Bouton Ajouter.

    Le gestionnaire d’événements Click de la case à cocher Bouton Ajouter s’ouvre dans l’éditeur de code.

  11. Revenez au Concepteur de ruban et double-cliquez sur Ajouter un contrôle de texte enrichi.

    Le gestionnaire d’événements Click de la case à cocher Ajouter un contrôle de texte enrichi s’ouvre dans l’éditeur de code.

    Plus loin dans cette procédure pas à pas, vous ajouterez du code à ces gestionnaires d’événements pour ajouter et supprimer des contrôles dans le document actif.

Ajouter et supprimer des contrôles sur le document actif

Dans le code de complément VSTO, vous devez convertir le document actif en DocumentT:Microsoft.Office.Tools.Word.Document avant de pouvoir ajouter un contrôle. Dans les solutions Office, vous ne pouvez ajouter des contrôles managés qu’à des éléments hôtes, qui agissent comme des conteneurs pour les contrôles. Dans les projets de complément VSTO, les éléments hôtes peuvent être créés au moment de l’exécution à l’aide de la GetVstoObject méthode.

Ajoutez des méthodes à la classe ThisAddIn qui peut être appelée pour ajouter ou supprimer un Button ou RichTextContentControl dans le document actif. Plus loin dans cette procédure, vous appellerez ces méthodes à partir des gestionnaires d’événements Click des cases à cocher dans le ruban.

Pour ajouter et supprimer des contrôles dans le document actif

  1. Dans Explorateur de solutions, double-cliquez sur ThisAddIn.cs ou ThisAddIn.vb pour ouvrir le fichier dans l’éditeur de code.

  2. Ajoutez le code suivant à la classe ThisAddIn . Ce code déclare des objets Button et RichTextContentControl qui représentent les contrôles qui seront ajoutés au document.

    private Microsoft.Office.Tools.Word.Controls.Button button = null;
    private RichTextContentControl richTextControl = null;
    
  3. Ajoutez la méthode suivante à la classe ThisAddIn. Quand l’utilisateur clique sur la case à cocher Bouton Ajouter dans le ruban, cette méthode ajoute un Button à la sélection actuelle dans le document si la case est cochée, ou supprime le Button si la case est décochée.

    internal void ToggleButtonOnDocument()
    {
        Document vstoDocument = Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
    
    
        string name = "MyButton";
    
        if (Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked)
        {
            Word.Selection selection = this.Application.Selection;
            if (selection != null && selection.Range != null)
            {
                button = vstoDocument.Controls.AddButton(
                    selection.Range, 100, 30, name);
            }
        }
        else
        {
            vstoDocument.Controls.Remove(name);
        }
    }
    
  4. Ajoutez la méthode suivante à la classe ThisAddIn. Quand l’utilisateur clique sur la case à cocher Ajouter un contrôle de texte enrichi dans le ruban, cette méthode ajoute un RichTextContentControl à la sélection actuelle dans le document si la case est cochée, ou supprime le RichTextContentControl si la case est décochée.

    internal void ToggleRichTextControlOnDocument()
    {
    
        Document vstoDocument = Globals.Factory.GetVstoObject(this.Application.ActiveDocument);
    
    
        string name = "MyRichTextBoxControl";
    
        if (Globals.Ribbons.MyRibbon.addRichTextCheckBox.Checked)
        {
            Word.Selection selection = this.Application.Selection;
            if (selection != null && selection.Range != null)
            {
                richTextControl = vstoDocument.Controls.AddRichTextContentControl(
                    selection.Range, name);
            }
        }
        else
        {
            vstoDocument.Controls.Remove(name);
        }
    }
    

Supprimer le contrôle Button lorsque le document est enregistré

Les contrôles Windows Forms ne sont pas conservés lorsque le document est enregistré puis fermé. Toutefois, un wrapper ActiveX pour chaque contrôle reste dans le document, et la bordure de ce wrapper est visible par les utilisateurs finaux quand le document est rouvert. Il existe plusieurs façons de propre des contrôles Windows Forms créés dynamiquement dans les compléments VSTO. Dans cette procédure pas à pas, vous supprimez par programme le Button contrôle lorsque le document est enregistré.

Pour supprimer le contrôle Button quand le document est enregistré

  1. Dans le fichier de code ThisAddIn.cs ou ThisAddIn.vb , ajoutez la méthode suivante à la ThisAddIn classe. Cette méthode est un gestionnaire d’événements pour l’événement DocumentBeforeSave . Si le document enregistré a un élément hôte Document qui lui est associé, le gestionnaire d’événements obtient l’élément hôte et supprime le contrôle Button , s’il existe.

    private void Application_DocumentBeforeSave(Word.Document Doc, 
        ref bool SaveAsUI, ref bool Cancel)
    {
        bool isExtended = Globals.Factory.HasVstoObject(Doc);
    
    
        if (isExtended)
        {
    
            Microsoft.Office.Tools.Word.Document vstoDocument = Globals.Factory.GetVstoObject(Doc);
    
            if (vstoDocument.Controls.Contains(button))
            {
                vstoDocument.Controls.Remove(button);
                Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked = false;
            }
        }
    }
    
  2. En C#, ajoutez le code suivant au gestionnaire d’événements ThisAddIn_Startup . Ce code est nécessaire en C# pour connecter le gestionnaire d’événements Application_DocumentBeforeSave à l’événement DocumentBeforeSave .

    this.Application.DocumentBeforeSave += 
        new Word.ApplicationEvents4_DocumentBeforeSaveEventHandler(
        Application_DocumentBeforeSave);
    

Ajouter et supprimer des contrôles lorsque l’utilisateur clique sur les zones case activée du ruban

Enfin, modifiez les Click gestionnaires d’événements des zones case activée que vous avez ajoutées au ruban pour ajouter ou supprimer des contrôles sur le document.

Pour ajouter ou supprimer des contrôles lorsque l’utilisateur clique sur les zones de case activée sur le ruban

  1. Dans le fichier de code MyRibbon.cs ou MyRibbon.vb, remplacez les gestionnaires d’événements et addRichTextCheckBox_Click générés addButtonCheckBox_Click par le code suivant. Ce code redéfinit ces gestionnaires d’événements pour appeler les méthodes ToggleButtonOnDocument et ToggleRichTextControlOnDocument que vous avez ajoutées à la classe ThisAddIn plus tôt lors de cette procédure pas à pas.

    private void addButtonCheckBox_Click(object sender, RibbonControlEventArgs e)
    {
        Globals.ThisAddIn.ToggleButtonOnDocument();
    }
    
    private void addRichTextCheckBox_Click(object sender, RibbonControlEventArgs e)
    {
        Globals.ThisAddIn.ToggleRichTextControlOnDocument();
    }
    

Test de la solution

Ajoutez des contrôles à un document en les sélectionnant à partir de l’onglet personnalisé dans le ruban. Quand vous enregistrez le document, le contrôle Button est supprimé.

Pour tester la solution.

  1. Appuyez sur F5 pour exécuter votre projet.

  2. Dans le document actif, appuyez plusieurs fois sur Entrée pour ajouter de nouveaux paragraphes vides au document.

  3. Sélectionnez le premier paragraphe.

  4. Cliquez sur l'onglet Compléments .

  5. Dans le groupe Ajouter des contrôles , cliquez sur Bouton Ajouter.

    Un bouton apparaît dans le premier paragraphe.

  6. Sélectionnez le dernier paragraphe.

  7. Dans le groupe Ajouter des contrôles , cliquez sur Ajouter un contrôle de texte enrichi.

    Un contrôle de contenu de texte enrichi est ajouté au dernier paragraphe.

  8. Enregistrez le document.

    Le bouton est supprimé du document.

Étapes suivantes

Pour en savoir plus sur les contrôles dans les compléments VSTO, consultez les rubriques suivantes :