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


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

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

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

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

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

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

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

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

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

InfoPath 2013

InfoPath 2010

Outlook

PowerPoint

Project

Visio

Word
ICustomTaskPaneConsumer Реализуйте этот интерфейс для создания настраиваемой панели задач. Excel

Outlook

PowerPoint

Word
FormRegionStartup Реализуйте этот интерфейс для создания области формы Outlook. Outlook

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

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

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

Пример приложения, демонстрирующего реализацию IRibbonExtensibilityICustomTaskPaneConsumerинтерфейсов и FormRegionStartup интерфейсов в надстройке VSTO для Outlook, см. в примере диспетчера пользовательского интерфейса в примерах разработки Office.

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

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

  • Класс TaskPaneHelper реализует ICustomTaskPaneConsumer для создания и отображения настраиваемой панели задач.

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

    Примечание.

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

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