Comment : ajouter un élément de menu contextuel à un type d'élément de projet SharePoint personnaliséHow to: Add a Shortcut Menu Item to a Custom SharePoint Project Item Type

Lorsque vous définissez un type d’élément de projet SharePoint personnalisé, vous pouvez ajouter un élément de menu contextuel pour l’élément de projet.When you define a custom SharePoint project item type, you can add a shortcut menu item to the project item. L’élément de menu s’affiche lorsqu’un utilisateur clique sur l’élément de projet dans l’Explorateur de solutions.The menu item appears when a user right-clicks the project item in Solution Explorer.

Les étapes suivantes supposent que vous avez déjà défini votre propre type d’élément de projet SharePoint.The following steps assume that you have already defined your own SharePoint project item type. Pour plus d’informations, consultez Comment : définir un Type d’élément de projet SharePoint.For more information, see How to: Define a SharePoint Project Item Type.

Pour ajouter un élément de menu contextuel à un type d’élément de projet personnalisésTo add a shortcut menu item to a custom project item type

  1. Dans le InitializeType méthode de votre ISharePointProjectItemTypeProvider implémentation, gérez le ProjectItemMenuItemsRequested l’événement de la projectItemTypeDefinition paramètre.In the InitializeType method of your ISharePointProjectItemTypeProvider implementation, handle the ProjectItemMenuItemsRequested event of the projectItemTypeDefinition parameter.

  2. Dans votre gestionnaire d’événements pour le ProjectItemMenuItemsRequested événement, ajouter un nouveau IMenuItem de l’objet à la ViewMenuItems ou AddMenuItems collection du paramètre d’arguments de l’événement.In your event handler for the ProjectItemMenuItemsRequested event, add a new IMenuItem object to the ViewMenuItems or AddMenuItems collection of the event arguments parameter.

  3. Dans le Click pour le nouveau gestionnaire d’événements IMenuItem de l’objet, effectuez les tâches que vous souhaitez exécuter lorsqu’un utilisateur choisit l’élément de menu contextuel.In the Click event handler for the new IMenuItem object, perform the tasks you want to execute when a user chooses your shortcut menu item.

ExempleExample

L’exemple de code suivant montre comment ajouter un élément de menu contextuel à un type d’élément de projet personnalisé.The following code example demonstrates how to add a context menu item to a custom project item type. Lorsque l’utilisateur ouvre le menu contextuel à partir de l’élément de projet dans l’Explorateur de solutions et choisit le écrire le Message dans la fenêtre sortie élément de menu, Visual Studio affiche un message dans le sortie fenêtre.When the user opens the shortcut menu from the project item in Solution Explorer and chooses the Write Message to Output Window menu item, Visual Studio displays a message in the Output window.

using System;
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.SharePoint;

namespace Contoso.Examples.ProjectItemTypeWithMenu
{
    [Export(typeof(ISharePointProjectItemTypeProvider))]
    [SharePointProjectItemType("Contoso.ExampleProjectItemType")]
    [SharePointProjectItemIcon("ExampleProjectItemType.ProjectItemIcon.ico")]
    internal class ExampleProjectItemTypeWithMenu : ISharePointProjectItemTypeProvider
    {
        public void InitializeType(ISharePointProjectItemTypeDefinition projectItemTypeDefinition)
        {
            projectItemTypeDefinition.Name = "ExampleProjectItemType";
            projectItemTypeDefinition.SupportedDeploymentScopes =
                SupportedDeploymentScopes.Site | SupportedDeploymentScopes.Web;
            projectItemTypeDefinition.SupportedTrustLevels = SupportedTrustLevels.All;

            projectItemTypeDefinition.ProjectItemMenuItemsRequested += 
                projectItemTypeDefinition_ProjectItemMenuItemsRequested;
        }

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

        void MenuItemExtension_Click(object sender, MenuItemEventArgs e)
        {
            ISharePointProjectItem projectItem = (ISharePointProjectItem)e.Owner;
            projectItem.Project.ProjectService.Logger.WriteLine(
                String.Format("This message was written from a shortcut menu for {0}.", projectItem.Name),
                LogCategory.Status);
        }
    }
}
Imports System
Imports System.ComponentModel.Composition
Imports Microsoft.VisualStudio.SharePoint

Namespace Contoso.Examples.ProjectItemTypeWithMenu

    <Export(GetType(ISharePointProjectItemTypeProvider))> _
    <SharePointProjectItemType("Contoso.ExampleProjectItemType")> _
    <SharePointProjectItemIcon("ExampleProjectItemType.ProjectItemIcon.ico")> _
    Friend Class ExampleProjectItemTypeWithMenu
        Implements ISharePointProjectItemTypeProvider

        Private Sub InitializeType(ByVal projectItemTypeDefinition As ISharePointProjectItemTypeDefinition) _
            Implements ISharePointProjectItemTypeProvider.InitializeType
            projectItemTypeDefinition.Name = "ExampleProjectItemType"
            projectItemTypeDefinition.SupportedDeploymentScopes = _
                SupportedDeploymentScopes.Site Or SupportedDeploymentScopes.Web
            projectItemTypeDefinition.SupportedTrustLevels = SupportedTrustLevels.All

            AddHandler projectItemTypeDefinition.ProjectItemMenuItemsRequested, AddressOf ProjectItemMenuItemsRequested
        End Sub

        Private Sub ProjectItemMenuItemsRequested(ByVal Sender As Object,
            ByVal e As SharePointProjectItemMenuItemsRequestedEventArgs)
            Dim menuItem As IMenuItem = e.ViewMenuItems.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 projectItem As ISharePointProjectItem = CType(e.Owner, ISharePointProjectItem)
            projectItem.Project.ProjectService.Logger.WriteLine(
                String.Format("This message was written from a shortcut menu for {0}.", projectItem.Name),
                LogCategory.Status)
        End Sub
    End Class
End Namespace

Cet exemple utilise le service de projet SharePoint pour écrire le message à la sortie fenêtre.This example uses the SharePoint project service to write the message to the Output window. Pour plus d’informations, consultez à l’aide du Service de projet SharePoint.For more information, see Using the SharePoint Project Service.

Compilation du codeCompiling the Code

Cet exemple requiert un projet de bibliothèque de classes avec des références aux assemblys suivants :This example requires a class library project with references to the following assemblies:

  • Microsoft.VisualStudio.SharePointMicrosoft.VisualStudio.SharePoint

  • System.ComponentModel.CompositionSystem.ComponentModel.Composition

Déploiement de l’élément de projetDeploying the Project Item

Pour activer les autres développeurs d’utiliser votre élément de projet, créer un modèle de projet ou un modèle d’élément de projet.To enable other developers to use your project item, create a project template or a project item template. Pour plus d’informations, consultez création de modèles d’élément et les modèles de projet pour les éléments de projet SharePoint.For more information, see Creating Item Templates and Project Templates for SharePoint Project Items.

Pour déployer l’élément de projet, créez un Visual StudioVisual Studio package d’extension (VSIX) pour l’assembly, le modèle et tous les autres fichiers que vous voulez distribuer avec l’élément de projet.To deploy the project item, create a Visual StudioVisual Studio extension (VSIX) package for the assembly, the template, and any other files that you want to distribute with the project item. Pour plus d’informations, consultez déploiement d’Extensions pour les outils SharePoint dans Visual Studio.For more information, see Deploying Extensions for the SharePoint Tools in Visual Studio.

Voir aussiSee Also

Comment : définir un Type d’élément de projet SharePoint How to: Define a SharePoint Project Item Type
Comment : ajouter une propriété à un Type d’élément de projet SharePoint personnalisé How to: Add a Property to a Custom SharePoint Project Item Type
Définition de types d’éléments de projet SharePoint personnalisésDefining Custom SharePoint Project Item Types