Comment : ajouter un élément de menu contextuel à une extension d'élément de projet SharePoint
Vous pouvez ajouter un élément de menu contextuel à un élément de projet SharePoint existant à l'aide d'une extension d'élément de projet.L'élément de menu apparaît lorsqu'un utilisateur clique avec le bouton droit sur l'élément de projet dans l'Explorateur de solutions.
Les étapes suivantes supposent que vous avez déjà créé une extension d'élément de projet.Pour plus d'informations, consultez Comment : créer une extension d'élément de projet SharePoint.
Pour ajouter un élément de menu contextuel dans une extension d'élément de projet
Dans la méthode Initialize de votre implémentation ISharePointProjectItemTypeExtension, gérez l'événement ProjectItemMenuItemsRequested du paramètre projectItemType.
Dans votre gestionnaire d'événements pour l'événement ProjectItemMenuItemsRequested, ajoutez un nouvel objet IMenuItem à la collection ViewMenuItems ou AddMenuItems du paramètre d'arguments d'événement.
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 à l'élément de projet Récepteur d'événements.Lorsque l'utilisateur clique avec le bouton droit sur l'élément de projet dans l'Explorateur de solutions, 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.
Imports System
Imports System.ComponentModel.Composition
Imports Microsoft.VisualStudio.SharePoint
Namespace Contoso.Examples.ProjectItemExtensionWithMenu
<Export(GetType(ISharePointProjectItemTypeExtension))> _
<SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.EventHandler")> _
Friend Class ExampleProjectItemExtensionWithMenu
Implements ISharePointProjectItemTypeExtension
Private Sub Initialize(ByVal projectItemType As ISharePointProjectItemType) _
Implements ISharePointProjectItemTypeExtension.Initialize
AddHandler projectItemType.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
using System;
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.SharePoint;
namespace Contoso.Examples.ProjectItemExtensionWithMenu
{
[Export(typeof(ISharePointProjectItemTypeExtension))]
[SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.EventHandler")]
internal class ExampleProjectItemExtensionWithMenu : ISharePointProjectItemTypeExtension
{
public void Initialize(ISharePointProjectItemType projectItemType)
{
projectItemType.ProjectItemMenuItemsRequested += projectItemType_ProjectItemMenuItemsRequested;
}
void projectItemType_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);
}
}
}
Cet exemple utilise le service de projet SharePoint pour écrire le message dans la fenêtre Sortie.Pour plus d'informations, consultez Utilisation du service de projet SharePoint.
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
Tâches
Procédure pas à pas : extension d'un type d'élément de projet SharePoint
Concepts
Comment : créer une extension d'élément de projet SharePoint
Comment : ajouter une propriété à une extension d'élément de projet SharePoint