Настройка функций пользовательского интерфейса с помощью интерфейсов расширяемости
Обновлен: Ноябрь 2007
Применение |
---|
Сведения в данном разделе относятся только к указанным проектам Visual Studio Tools for Office и версиям приложений Microsoft Office. Тип проекта
Версия 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.
Примечание.
Можно добавить в проект элемент Лента (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, но элементы управления можно добавить, изменив код.
Примечание. Чтобы сделать класс 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