Condividi tramite


Procedura: aggiungere una voce di menu di scelta rapida a un tipo di elemento di progetto SharePoint personalizzato

Quando si definisce un tipo di elemento di progetto SharePoint personalizzato, è possibile aggiungere una voce di menu di scelta rapida all'elemento di progetto.La voce di menu viene visualizzata quando un utente fa clic con il pulsante destro del mouse sull'elemento di progetto in Esplora soluzioni.

I passaggi seguenti presuppongono che sia già stato definito il tipo di elemento di progetto SharePoint personalizzato.Per ulteriori informazioni, vedere Procedura: definire un tipo di elemento di progetto SharePoint.

Per aggiungere una voce di menu di scelta rapida a un tipo di elemento di progetto personalizzato

  1. Nel metodo InitializeType dell'implementazione di ISharePointProjectItemTypeProvider gestire l'evento ProjectItemMenuItemsRequested del parametro projectItemTypeDefinition.

  2. Nel gestore eventi dell'evento ProjectItemMenuItemsRequested aggiungere un nuovo oggetto IMenuItem alla raccolta ViewMenuItems o AddMenuItems del parametro degli argomenti dell'evento.

  3. Nel gestore eventi Click per il nuovo oggetto IMenuItem, eseguire le attività da eseguire quando un utente sceglie la voce di menu di scelta rapida.

Esempio

Nell'esempio di codice seguente viene illustrato come aggiungere una voce di menu di scelta rapida a un tipo di elemento di progetto personalizzato.Quando l'utente apre il menu di scelta rapida l'elemento di progetto in Esplora soluzioni e sceglie la voce di menu Scrivi messaggio su finestra di output, verrà visualizzato un messaggio nella finestra Output.

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

In questo esempio viene utilizzato il servizio di progetto SharePoint per scrivere il messaggio nella finestra Output.Per ulteriori informazioni, vedere Utilizzo del servizio di progetto SharePoint.

Compilazione del codice

Per questo esempio è necessario un progetto Libreria di classi con i riferimenti agli assembly seguenti:

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

Distribuzione dell'elemento di progetto

Per consentire ad altri sviluppatori di utilizzare l'elemento di progetto, creare un modello di progetto o un modello di elemento di progetto.Per ulteriori informazioni, vedere Creazione di modelli di elemento e di modelli di progetto per gli elementi di progetto SharePoint.

Per distribuire l'elemento di progetto, creare un pacchetto Visual Studio Extension (VSIX) per l'assembly, il modello e qualsiasi altro file che si desidera distribuire con l'elemento di progetto.Per ulteriori informazioni, vedere Distribuzione di estensioni per gli strumenti di SharePoint in Visual Studio.

Vedere anche

Concetti

Procedura: definire un tipo di elemento di progetto SharePoint

Procedura: aggiungere una proprietà a un tipo di elemento di progetto SharePoint personalizzato

Definizione di tipi di elementi di progetto SharePoint