Partager via


Comment : ajouter un élément de menu contextuel à des projets SharePoint

Vous pouvez ajouter un élément de menu contextuel à tout projet SharePoint.L'élément de menu apparaît lorsqu'un utilisateur clique avec le bouton droit sur un nœud de projet dans l'Explorateur de solutions.

Les étapes suivantes supposent que vous avez déjà créé une extension de projet.Pour plus d'informations, consultez Comment : créer une extension de projet SharePoint.

Pour ajouter un élément de menu contextuel à des projets SharePoint

  1. Dans la méthode Initialize de votre implémentation ISharePointProjectExtension, gérez l'événement ProjectMenuItemsRequested du paramètre projectService.

  2. Dans votre gestionnaire d'événements pour l'événement ProjectMenuItemsRequested, ajoutez un nouvel objet IMenuItem à la collection ActionMenuItems ou AddMenuItems du paramètre d'arguments d'événement.

  3. Dans le gestionnaire d'événements Click pour le nouvel objet IMenuItem, effectuez les tâches que vous voulez exécuter lorsqu'un utilisateur clique sur votre élément de menu contextuel.

Exemple

L'exemple de code suivant montre comment ajouter un élément de menu contextuel aux nœuds de projet SharePoint dans l'Explorateur de solutions.Lorsque l'utilisateur clique avec le bouton droit sur un nœud de projet, puis clique sur l'élément de menu Écrire le message dans la fenêtre Sortie, Visual Studio affiche un message dans la fenêtre Sortie.Cet exemple utilise le service de projet SharePoint pour afficher le message.Pour plus d'informations, consultez Utilisation du service de projet SharePoint.

Imports System
Imports System.ComponentModel.Composition
Imports Microsoft.VisualStudio.SharePoint

Namespace Contoso.Examples

    <Export(GetType(ISharePointProjectExtension))> _
    Friend Class ExampleProjectExtensionWithMenu
        Implements ISharePointProjectExtension

        Private Sub Initialize(ByVal projectService As ISharePointProjectService) _
            Implements ISharePointProjectExtension.Initialize
            AddHandler projectService.ProjectMenuItemsRequested, AddressOf ProjectMenuItemsRequested
        End Sub

        Private Sub ProjectMenuItemsRequested(ByVal Sender As Object,
            ByVal e As SharePointProjectMenuItemsRequestedEventArgs)
            Dim menuItem As IMenuItem = e.ActionMenuItems.Add("Write Message to Output Window")
            AddHandler menuItem.Click, AddressOf MenuItem_Click
        End Sub

        Private Sub MenuItem_Click(ByVal Sender As Object, ByVal e As MenuItemEventArgs)
            Dim project As ISharePointProject = TryCast(e.Owner, ISharePointProject)
            If project IsNot Nothing Then
                project.ProjectService.Logger.WriteLine(
                    String.Format("This message was written from a shortcut menu for the {0} project.", project.Name),
                    LogCategory.Status)
            End If
        End Sub
    End Class
End Namespace
using System;
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.SharePoint;

namespace Contoso.Examples
{
    [Export(typeof(ISharePointProjectExtension))]
    internal class ExampleProjectExtensionWithMenu : ISharePointProjectExtension
    {
        public void Initialize(ISharePointProjectService projectService)
        {
            projectService.ProjectMenuItemsRequested += projectService_ProjectMenuItemsRequested;
        }

        void projectService_ProjectMenuItemsRequested(object sender, 
            SharePointProjectMenuItemsRequestedEventArgs e)
        {
            IMenuItem menuItem = e.ActionMenuItems.Add("Write Message to Output Window");
            menuItem.Click += MenuItemExtension_Click;
        }

        void MenuItemExtension_Click(object sender, MenuItemEventArgs e)
        {
            ISharePointProject project = e.Owner as ISharePointProject;
            if (project != null)
            {
                project.ProjectService.Logger.WriteLine(
                    String.Format("This message was written from a shortcut menu for the {0} project.", project.Name),
                    LogCategory.Status);
            }
        }
    }
}

Compilation du code

Cet exemple requiert un projet de bibliothèque de classes avec des références aux assemblys suivants :

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

Déploiement de l'extension

Pour déployer l'extension, créez un package d'extension Visual Studio (VSIX) pour l'assembly et tous les autres fichiers que vous voulez distribuer avec l'extension.Pour plus d'informations, consultez Déploiement d'extensions pour les outils SharePoint dans Visual Studio.

Voir aussi

Concepts

Extension de projets SharePoint

Comment : créer une extension de projet SharePoint

Comment : ajouter une propriété à des projets SharePoint