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


Настройка функций пользовательского интерфейса с помощью интерфейсов расширяемости

Средства разработки office в Visual Studio предоставляют классы и конструкторы, обрабатывающие многие сведения о реализации при использовании для создания настраиваемых областей задач настройки ленты и области формы outlook в надстройке уровня приложения.Однако в случае особой необходимости реализовать интерфейс расширяемости можно для любой функции.

Применение. Сведения этого раздела применяются к проектам уровня приложения для Microsoft Office 2013 Preview и Microsoft Office 2010. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.

Общие сведения об интерфейсах расширяемости

Microsoft Office определяет набор интерфейсов расширяемости, которые добавить- ins модели COM может реализовать настраивать некоторые функции, например ленты.Эти интерфейсы обеспечивают полное управление функциями, к которым они предоставляют доступ.Однако реализация этих интерфейсов требует определенных знаний взаимодействия COM в управляемом коде.В некоторых случаях модель программирования этих интерфейсов не является интуитивно понятной для разработчиков, привыкших к платформе .NET Framework.

При создании надстройки с помощью шаблонов проектов office в Visual Studio, не следует реализовать интерфейсы расширяемости для настройки функций как ленты.Среда Visual Studio Tools for Office (cреда выполнения) сама реализует эти интерфейсы.Вместо этого можно использовать более интуитивно понятные классы и конструкторы, предоставляемые в Visual Studio.Однако при необходимости интерфейсы расширяемости можно также реализовать непосредственно в надстройке.

Дополнительные сведения о классах и конструкторах, предоставляемых в Visual Studio для данных функциональных возможностей, см. в разделах Настраиваемые области задач, Конструктор лент и Создание областей форм Outlook.

Интерфейсы расширяемости, которые можно реализовать в надстройке

В следующей таблице перечислены интерфейсы расширяемости, которые можно реализовать, а также приложения, которые их поддерживают:

Интерфейс

Описание

Приложения

Microsoft.Office.Core.IRibbonExtensibility

Реализуйте этот интерфейс, чтобы настраивать пользовательский интерфейс ленты.

ПримечаниеПримечание
Можно добавить в проект элемент Лента (XML), чтобы сгенерировать реализацию по умолчанию для Microsoft.Office.Core.IRibbonExtensibility в надстройке.Дополнительные сведения см. в разделе XML-ленты.

Excel 2013

InfoPath 2013

Outlook 2013

PowerPoint 2013

Project 2013

Visio 2013

Word 2013

Excel 2010

InfoPath 2010

Outlook 2010

PowerPoint 2010

Project 2010

Visio 2010

Word 2010

Microsoft.Office.Core.ICustomTaskPaneConsumer

Реализация этого интерфейса позволяет создать настраиваемую панель задач.

Excel 2013

Outlook 2013

PowerPoint 2013

Word 2013

Excel 2010

Outlook 2010

PowerPoint 2010

Word 2010

Microsoft.Office.Interop.Outlook.FormRegionStartup

Реализация этого интерфейса позволяет создавать области форм Outlook.

Outlook 2013

Outlook 2010

Существует несколько других интерфейсов расширяемости, которые определяются в Microsoft Office, например Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvider и Microsoft.Office.Core.SignatureProvider.Visual Studio не поддерживает реализацию этих интерфейсов в надстройках, созданных с помощью шаблонов проектов Office.

Использование интерфейсов расширяемости

Чтобы настроить функцию пользовательского интерфейса с помощью интерфейсов расширяемости, следует реализовать соответствующий интерфейс в проекте надстройки.Затем необходимо переопределить метод RequestService таким образом, чтобы он возвращал экземпляр класса, реализующего интерфейс.

Пример приложения, в котором реализуются интерфейсы Microsoft.Office.Core.IRibbonExtensibility, Microsoft.Office.Core.ICustomTaskPaneConsumer и Microsoft.Office.Interop.Outlook.FormRegionStartup в надстройке Outlook, см. в примере диспетчера пользовательского интерфейса в разделе Примеры разработки решений Office.

Bb608601.collapse_all(ru-ru,VS.110).gifПримеры реализации интерфейсов расширяемости

В следующем примере кода демонстрируется простая реализация интерфейса Microsoft.Office.Core.ICustomTaskPaneConsumer для создания настраиваемой панели задач.В данном примере определяются два класса:

  • Класс TaskPaneHelper реализует интерфейс Microsoft.Office.Core.ICustomTaskPaneConsumer, чтобы создать и отобразить настраиваемую панель задач.

  • Класс TaskPaneUI реализует пользовательский интерфейс панели задач.Атрибуты класса TaskPaneUI делают класс видимым для СОМ, что позволяет приложениям Microsoft Office обнаружить класс.В данном примере пользовательский интерфейс — это пустой элемент управления UserControl, но элементы управления можно добавить, изменив код.

    ПримечаниеПримечание

    Чтобы сделать класс TaskPaneUI доступным в СОМ, следует также задать для проекта свойство Регистрация для COM-взаимодействия.Дополнительные сведения см. в разделе Управление свойствами компиляции.

Public Class TaskPaneHelper
    Implements Office.ICustomTaskPaneConsumer

    Friend taskPane As Office.CustomTaskPane

    Public Sub CTPFactoryAvailable(ByVal CTPFactoryInst As Office.ICTPFactory) _
        Implements Office.ICustomTaskPaneConsumer.CTPFactoryAvailable

        If CTPFactoryInst IsNot Nothing Then
            ' Create a new task pane.
            taskPane = CTPFactoryInst.CreateCTP( _
                "Microsoft.Samples.Vsto.VB.TaskPaneUI", "Contoso")
            taskPane.Visible = True
        End If
    End Sub
End Class

<System.Runtime.InteropServices.ComVisible(True)> _
<System.Runtime.InteropServices.ProgId("Microsoft.Samples.Vsto.VB.TaskPaneUI")> _
<System.Runtime.InteropServices.Guid("FFA0920E-F7A5-453d-8AB2-249F4C25B4B2")> _
Public Class TaskPaneUI
    Inherits UserControl
End Class
public class TaskPaneHelper : Office.ICustomTaskPaneConsumer
{
    internal Office.CustomTaskPane taskPane;

    public void CTPFactoryAvailable(Office.ICTPFactory CTPFactoryInst)
    {
        if (CTPFactoryInst != null)
        {
            // Create a new task pane.
            taskPane = CTPFactoryInst.CreateCTP(
                "Microsoft.Samples.Vsto.CS.TaskPaneUI",
                "Contoso");
            taskPane.Visible = true;
        }
    }
}

[System.Runtime.InteropServices.ComVisible(true)]
[System.Runtime.InteropServices.ProgId("Microsoft.Samples.Vsto.CS.TaskPaneUI")]
[System.Runtime.InteropServices.Guid("FFA0920E-F7A5-453d-8AB2-249F4C25B4B2")]
public class TaskPaneUI : UserControl
{
}

Дополнительные сведения о реализации Microsoft.Office.Core.ICustomTaskPaneConsumer см. в разделе Создание настраиваемых областей задач в системе Office 2007 документации по Microsoft Office.

Bb608601.collapse_all(ru-ru,VS.110).gifПример переопределения метода RequestService

В следующем примере кода демонстрируется, как переопределить метод RequestService таким образом, чтобы он возвращал экземпляр класса TaskPaneHelper, созданного в предыдущем примере.При этом проверяется значение параметраserviceGuid, чтобы определить, какой интерфейс был запрошен, а затем возвращается объект, который реализует нужный интерфейс.

Friend taskPaneHelper1 As TaskPaneHelper

Protected Overrides Function RequestService( _
    ByVal serviceGuid As Guid) As Object

    If (serviceGuid = GetType(Office.ICustomTaskPaneConsumer).GUID) Then
        If (taskPaneHelper1 Is Nothing) Then
            taskPaneHelper1 = New TaskPaneHelper()
        End If
        Return taskPaneHelper1
    End If

    Return MyBase.RequestService(serviceGuid)
End Function
internal TaskPaneHelper taskPaneHelper1;

protected override object RequestService(Guid serviceGuid)
{
    if (serviceGuid == typeof(Office.ICustomTaskPaneConsumer).GUID)
    {
        if (taskPaneHelper1 == null)
        {
            taskPaneHelper1 = new TaskPaneHelper();
        }
        return taskPaneHelper1;
    }

    return base.RequestService(serviceGuid);
}

См. также

Задачи

Практическое руководство. Создание проектов Office в Visual Studio

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

Вызов кода в надстройках уровня приложения из других решений Office

Архитектура надстроек уровня приложения

Другие ресурсы

Образцы и пошаговые руководства разработки Office

Программирование надстроек уровня приложения

Разработка решений Office