Поделиться через


Практическое руководство. Добавление пункта контекстного меню в проекты SharePoint

В элементе проекта SharePoint можно добавить пункт контекстного меню.Этот пункт меню отображается, когда пользователь щелкает правой кнопкой мыши узел проекта в Обозревателе решений.

В описании следующих действий предполагается, что расширение проекта уже создано.Дополнительные сведения см. в разделе Практическое руководство. Создание расширения проекта SharePoint.

Добавление пункта контекстного меню в проекты SharePoint

  1. В методе Initialize реализации ISharePointProjectExtension обработайте событие ProjectMenuItemsRequested параметра projectService.

  2. В обработчике событий для события ProjectMenuItemsRequested добавьте новый объект IMenuItem в коллекцию ActionMenuItems или AddMenuItems параметра аргументов события.

  3. Выполните в обработчике событий Click для нового объекта IMenuItem задачи, которые должны выполняться при выборе пользователем пункта контекстного меню.

Пример

В следующем примере кода демонстрируется добавление пункта контекстного меню в узел проекта SharePoint в Обозреватель решений.Когда пользователь щелкает правой кнопкой мыши узел проекта и выбирает пункт меню Написать сообщение в окно выходных данных, Visual Studio отображает сообщение в окне Выходные данные.В этом примере используется служба проекта SharePoint для отображения сообщения.Дополнительные сведения см. в разделе Использование службы проектов 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);
            }
        }
    }
}

Компиляция кода

Для этого примера требуется проект библиотеки классов со ссылками на следующие сборки:

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

Развертывание расширения

Чтобы развернуть расширение, создайте пакет расширения Visual Studio (VSIX) для сборки и всех остальных файлов, которые предположительно будут распространяться с расширением.Дополнительные сведения см. в разделе Разработка расширений для средств SharePoint в Visual Studio.

См. также

Основные понятия

Расширение проектов SharePoint

Практическое руководство. Создание расширения проекта SharePoint

Практическое руководство. Добавление свойства в проекты SharePoint