Cómo: Agregar un elemento de menú contextual a una extensión de elemento de proyecto de SharePointHow to: Add a Shortcut Menu Item to a SharePoint Project Item Extension

Puede agregar un elemento de menú contextual a un elemento de proyecto de SharePoint existente mediante una extensión de elemento de proyecto.You can add a shortcut menu item to an existing SharePoint project item by using a project item extension. El elemento de menú aparece cuando un usuario seleccione el elemento de proyecto en el Explorador de soluciones.The menu item appears when a user right-clicks the project item in Solution Explorer.

Los pasos siguientes se supone que ya ha creado una extensión de elemento de proyecto.The following steps assume that you have already created a project item extension. Para obtener más información, consulte Cómo: crear una extensión de elemento de proyecto de SharePoint.For more information, see How to: Create a SharePoint Project Item Extension.

Para agregar un elemento de menú contextual en una extensión de elemento de proyectoTo add a shortcut menu item in a project item extension

  1. En el Initialize método de su ISharePointProjectItemTypeExtension implementación, el identificador de la ProjectItemMenuItemsRequested eventos de la projectItemType parámetro.In the Initialize method of your ISharePointProjectItemTypeExtension implementation, handle the ProjectItemMenuItemsRequested event of the projectItemType parameter.

  2. En el controlador de eventos para el ProjectItemMenuItemsRequested evento, agregue un nuevo IMenuItem el objeto a la ViewMenuItems o AddMenuItems colección del parámetro de argumentos del evento.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. En el Click controlador de eventos para el nuevo IMenuItem objeto, lleve a cabo las tareas que desea ejecutar cuando un usuario hace clic en el elemento de menú contextual.In the Click event handler for the new IMenuItem object, perform the tasks you want to execute when a user clicks your shortcut menu item.

EjemploExample

En el ejemplo de código siguiente se muestra cómo agregar un elemento de menú contextual para el elemento de proyecto de receptor de eventos.The following code example demonstrates how to add a shortcut menu item to the Event Receiver project item. Cuando el usuario seleccione el elemento de proyecto en el Explorador de soluciones y hace clic en el escribir mensaje de la ventana de salida elemento de menú, Visual Studio muestra un mensaje en el salidaventana.When the user right-clicks the project item in Solution Explorer and clicks the Write Message to Output Window menu item, Visual Studio displays a message in the Output window.

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);
        }
    }
}

Este ejemplo utiliza el servicio de proyecto de SharePoint para escribir el mensaje a la salida ventana.This example uses the SharePoint project service to write the message to the Output window. Para obtener más información, consulte Using the SharePoint Project Service.For more information, see Using the SharePoint Project Service.

Compilar el códigoCompiling the Code

En este ejemplo se necesita un proyecto de biblioteca de clases con referencias a los ensamblados siguientes:This example requires a class library project with references to the following assemblies:

  • Microsoft.VisualStudio.SharePointMicrosoft.VisualStudio.SharePoint

  • System.ComponentModel.CompositionSystem.ComponentModel.Composition

Implementar la extensiónDeploying the Extension

Para implementar la extensión, cree un Visual StudioVisual Studio paquete de extensión (VSIX) para el ensamblado y cualquier otro archivo que desee distribuir con la extensión.To deploy the extension, create a Visual StudioVisual Studio extension (VSIX) package for the assembly and any other files that you want to distribute with the extension. Para obtener más información, consulte extensiones de implementación para las herramientas de SharePoint en Visual Studio.For more information, see Deploying Extensions for the SharePoint Tools in Visual Studio.

Vea tambiénSee Also

Cómo: crear una extensión de elemento de proyecto de SharePoint How to: Create a SharePoint Project Item Extension
Cómo: agregar una propiedad a una extensión de elemento de proyecto de SharePoint How to: Add a Property to a SharePoint Project Item Extension
Extender elementos de proyecto de SharePoint Extending SharePoint Project Items
Tutorial: Extender un tipo de elemento de proyecto de SharePointWalkthrough: Extending a SharePoint Project Item Type