Настройка функций пользовательского интерфейса с помощью интерфейсов расширяемости
Средства разработки 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.
Интерфейсы расширяемости, которые можно реализовать в надстройке
В следующей таблице перечислены интерфейсы расширяемости, которые можно реализовать, а также приложения, которые их поддерживают:
Интерфейс |
Описание |
Приложения |
---|---|---|
Реализуйте этот интерфейс, чтобы настраивать пользовательский интерфейс ленты.
Примечание
Можно добавить в проект элемент Лента (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 |
|
Реализация этого интерфейса позволяет создать настраиваемую панель задач. |
Excel 2013 Outlook 2013 PowerPoint 2013 Word 2013 Excel 2010 Outlook 2010 PowerPoint 2010 Word 2010 |
|
Реализация этого интерфейса позволяет создавать области форм 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.
Примеры реализации интерфейсов расширяемости
В следующем примере кода демонстрируется простая реализация интерфейса 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.
Пример переопределения метода 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