Personalizar características de la interfaz de usuario mediante interfaces de extensibilidad
Las herramientas de desarrollo de Office en Visual Studio proporcionan clases y diseñadores que administran muchos detalles de implementación que se usan para crear paneles de tareas personalizados, personalizaciones de la cinta de opciones y áreas de formulario de Outlook en un complemento de nivel de aplicación. Sin embargo, también puede implementar la interfaz de extensibilidad de cada característica si tiene requisitos especiales.
Se aplica a: la información de este tema se aplica a los proyectos de nivel de aplicación para Microsoft Office 2010 y 2007 Microsoft Office System. Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto de Office.
Información general sobre las interfaces de extensibilidad
Microsoft Office define un conjunto de interfaces de extensibilidad que los complementos COM pueden implementar para personalizar ciertas características como la Cinta de opciones. Estas interfaces proporcionan un control completo de las características a las que proporcionan acceso. Sin embargo, al implementar estas interfaces, se requieren conocimientos de la interoperabilidad COM en código administrado. En algunos casos, el modelo de programación de estas interfaces tampoco es intuitivo para los desarrolladores acostumbrados a .NET Framework.
Al crear un complemento con las plantillas de proyecto de Office en Visual Studio, no tiene que implementar las interfaces de extensibilidad para personalizar características como la Cinta de opciones. Motor en tiempo de ejecución de Microsoft Visual Studio Tools para Office implementa estas interfaces automáticamente. En su lugar, puede usar las clases y los diseñadores más intuitivos que proporciona Visual Studio. Sin embargo, todavía podrá implementar las interfaces de extensibilidad directamente en el complemento, si así lo desea.
Para obtener más información sobre las clases y los diseñadores que Visual Studio proporciona para estas características, vea Información general sobre los paneles de tareas personalizados, Diseñador de la cinta de opciones y Crear áreas de formulario de Outlook.
Interfaces de extensibilidad que puede implementar en un complemento
En la tabla siguiente se enumeran las interfaces de extensibilidad que puede implementar y las aplicaciones que las admiten.
Interface |
Descripción |
Aplicaciones |
---|---|---|
Implemente esta interfaz para personalizar la interfaz de usuario de la cinta de opciones.
Nota
Puede agregar un elemento Cinta (XML) a un proyecto para generar una implementación de Microsoft.Office.Core.IRibbonExtensibility predeterminada en el complemento.Para obtener más información, vea XML de la cinta de opciones.
|
Excel 2007 y Excel 2010 InfoPath 2010 Outlook 2007 y Outlook 2010 PowerPoint 2007 y PowerPoint 2010 Project 2010 Visio 2010 Word 2007 y Word 2010 |
|
Implemente esta interfaz para crear un panel de tareas personalizado. |
Excel 2007 y Excel 2010 Outlook 2007 y Outlook 2010 PowerPoint 2007 y PowerPoint 2010 Word 2007 y Word 2010 |
|
Implemente esta interfaz para crear un área de formulario de Outlook. |
Outlook 2007 y Outlook 2010 |
Hay otras interfaces de extensibilidad que define Microsoft Office, como Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvider y Microsoft.Office.Core.SignatureProvider. Visual Studio no admite la implementación de estas interfaces en un complemento creado mediante las plantillas de proyecto de Office.
Utilizar las interfaces de extensibilidad
Para personalizar una característica de la interfaz de usuario con una interfaz de extensibilidad, implemente la interfaz adecuada en el proyecto de complemento. A continuación, invalide el método RequestService para devolver una instancia de la clase que implementa la interfaz.
Para tener acceso a una aplicación de ejemplo que muestra cómo implementar las interfaces Microsoft.Office.Core.IRibbonExtensibility, Microsoft.Office.Core.ICustomTaskPaneConsumer y Microsoft.Office.Interop.Outlook.FormRegionStartup en un complemento para Excel, vea el ejemplo de UI Manager en Ejemplos de desarrollo de Office.
Ejemplo de implementación de una interfaz de extensibilidad
En el ejemplo de código siguiente se muestra una implementación sencilla de la interfaz Microsoft.Office.Core.ICustomTaskPaneConsumer para crear un panel de tareas personalizado. Este ejemplo define dos clases:
La clase TaskPaneHelper implementa Microsoft.Office.Core.ICustomTaskPaneConsumer para crear y mostrar un panel de tareas personalizado.
La clase TaskPaneUI proporciona la interfaz de usuario del panel de tareas. Los atributos de la clase TaskPaneUI hacen que ésta esté visible para COM, lo que permite a las aplicaciones de Microsoft Office detectarla. En este ejemplo, la interfaz de usuario es un objeto UserControlvacío, pero puede agregar controles si modifica el código.
Nota
Para exponer la clase TaskPaneUI a COM, también debe establecer la propiedad Registrar para interoperabilidad COM del proyecto. Para obtener más información, consulte Cómo: Registrar un componente para interoperabilidad 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
{
}
Para obtener más información sobre cómo implementar Microsoft.Office.Core.ICustomTaskPaneConsumer, vea Creating Custom Task Panes in the 2007 Office System en la documentación de Microsoft Office.
Ejemplo de invalidación del método RequestService
En el ejemplo de código siguiente se muestra la forma de invalidar el método RequestService para devolver una instancia de la clase TaskPaneHelper del ejemplo de código anterior. Comprueba el valor del parámetro serviceGuid para determinar qué interfaz se solicita y, a continuación, devuelve un objeto que implementa esta interfaz.
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);
}
Vea también
Tareas
Cómo: Crear proyectos de Office en Visual Studio
Conceptos
Llamar a código en complementos de nivel de aplicación desde otras soluciones de Office
Arquitectura de los complementos de nivel de aplicación
Otros recursos
Ejemplos y tutoriales del desarrollo de Office