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


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

Обновлен: Ноябрь 2007

Применение

Сведения в данном разделе относятся только к указанным проектам Visual Studio Tools for Office и версиям приложений Microsoft Office.

Тип проекта

  • Проекты уровня приложения

Версия Microsoft Office

  • Выпуск 2007 системы Microsoft Office

Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов.

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

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

Приложения в выпуске 2007 системы Microsoft Office определяют набор интерфейсов расширяемости, которые надстройки COM могут реализовывать для настройки разных функций пользовательского интерфейса. Visual Studio Tools for Office упрощает этот процесс, реализуя этот интерфейс для разработчика и предоставляя разработчику классы и конструкторы, которые он может использовать. Однако интерфейсы расширяемости можно также реализовать непосредственно в надстройке.

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

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

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

Интерфейс

Описание

Приложения

Microsoft.Office.Core.IRibbonExtensibility

Реализация данного интерфейса позволяет настраивать пользовательский интерфейс ленты. Дополнительные сведения см. в описании объекта IRibbonExtensibility в документации по Microsoft Office 2007.

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

Excel 2007

InfoPath 2007

Outlook 2007

PowerPoint 2007

Word 2007

Microsoft.Office.Core.ICustomTaskPaneConsumer

Реализация этого интерфейса позволяет создать настраиваемую панель задач. Дополнительные сведения см. в описании объекта ICustomTaskPaneConsumer в документации по Microsoft Office 2007.

Excel 2007

Outlook 2007

PowerPoint 2007

Word 2007

Microsoft.Office.Interop.Outlook.FormRegionStartup

Реализация этого интерфейса позволяет создавать области форм Outlook. Дополнительные сведения см. в описании интерфейса FormRegionStartup в документации по Microsoft Office 2007.

Outlook 2007

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

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

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

Пример приложения, в котором реализуются интерфейсы Microsoft.Office.Core.IRibbonExtensibility и Microsoft.Office.Core.ICustomTaskPaneConsumer в надстройке Excel, см. в разделе Пример службы среды выполнения.

Примеры реализации интерфейсов расширяемости

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

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

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

    Bb608601.alert_note(ru-ru,VS.90).gifПримечание.

    Чтобы сделать класс TaskPaneUI доступным в СОМ, следует также задать для проекта свойство Регистрация для COM-взаимодействия. Дополнительные сведения см. в разделе Практическое руководство. Регистрация компонента для 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", Type.Missing);
            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 2007.

Пример переопределения метода 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);
}

См. также

Задачи

Пример службы среды выполнения

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

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

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

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

Ведущий элемент AddIn

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

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