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


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

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

Применимо к: Сведения в этом разделе относятся к проектам надстроек VSTO. Дополнительные сведения см. в разделе "Функции", доступные по типу приложения и проекта Office.

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

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

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

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

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

Интерфейс Description Приложения
IRibbonExtensibility Реализуйте этот интерфейс для настройки пользовательского интерфейса ленты. Примечание: Элемент Ribbon (XML) можно добавить в проект, чтобы создать типовую реализацию IRibbonExtensibility в вашей надстройке VSTO. Дополнительные сведения см. в разделе Ribbon XML. Эксель

InfoPath 2013

InfoPath 2010

Перспектива

PowerPoint

Проект

Visio

Слово
ICustomTaskPaneConsumer Реализуйте этот интерфейс для создания настраиваемой области задач. Эксель

Перспектива

PowerPoint

Слово
FormRegionStartup Реализуйте этот интерфейс для создания области формы Outlook. Перспектива

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

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

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

Пример приложения, демонстрирующий, как реализовать интерфейсы IRibbonExtensibility, ICustomTaskPaneConsumer и FormRegionStartup в надстройке VSTO для Outlook, см. в примере «Диспетчер пользовательского интерфейса» в разделе примеры разработки Office.

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

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

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

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

    Замечание

    Чтобы предоставить TaskPaneUI класс для COM, необходимо также задать свойство Register for COM Interop для проекта.

    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
    {
    }
    

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

Пример переопределения метода RequestService

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

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