Personalizar características de la interfaz de usuario mediante interfaces de extensibilidad
Actualización: noviembre 2007
Se aplica a |
---|
La información de este tema sólo se aplica a los proyectos y versiones especificados de Visual Studio Tools para Office de Microsoft Office. Tipo de proyecto
Versión de Microsoft Office
Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto. |
Visual Studio Tools para Office proporciona clases y diseñadores que administran muchos detalles de implementación que se utilizan para crear paneles de tareas personalizados, personalizaciones de la cinta de opciones y áreas de formulario de Outlook en un complemento en el nivel de la aplicación. Sin embargo, también puede implementar la interfaz de extensibilidad de cada característica si dispone de requisitos especiales.
Información general sobre las interfaces de extensibilidad
Las aplicaciones de 2007 Microsoft Office system definen un conjunto de interfaces de extensibilidad que los complementos COM pueden implementar para personalizar determinadas características de interfaz de usuario. Visual Studio Tools para Office simplifica este proceso implementando estas interfaces automáticamente y proporcionando clases y diseñadores que puede utilizar en su lugar. Sin embargo, también puede implementar directamente las interfaces de extensibilidad en el complemento.
Para obtener más información sobre las clases y los diseñadores que Visual Studio Tools para Office proporciona para estas características, vea Información general sobre los paneles de tareas personalizados, diseñador de la cinta de opcionesy 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 |
Description |
Aplicaciones |
---|---|---|
Microsoft.Office.Core.IRibbonExtensibility |
Implemente esta interfaz para personalizar la interfaz de usuario de la cinta de opciones. Para obtener más información, vea IRibbonExtensibility Object en la documentación de Microsoft Office 2007.
Nota:
Puede agregar un elemento Cinta (XML) a un proyecto para generar una implementación predeterminada de Microsoft.Office.Core.IRibbonExtensibility en el complemento. Para obtener más información, consulte XML de la cinta de opciones.
|
Excel 2007 InfoPath 2007 Outlook 2007 PowerPoint 2007 Word 2007 |
Microsoft.Office.Core.ICustomTaskPaneConsumer |
Implemente esta interfaz para crear un panel de tareas personalizado. Para obtener más información, vea ICustomTaskPaneConsumer Object en la documentación de Microsoft Office 2007. |
Excel 2007 Outlook 2007 PowerPoint 2007 Word 2007 |
Microsoft.Office.Interop.Outlook.FormRegionStartup |
Implemente esta interfaz para crear un área de formulario de Outlook. Para obtener más información, vea FormRegionStartup Interface en la documentación de Microsoft Office 2007. |
Outlook 2007 |
Hay otras interfaces de extensibilidad que definen las aplicaciones en 2007 Microsoft Office system, como Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvider y Microsoft.Office.Core.SignatureProvider. Visual Studio Tools para Office no permite implementar estas interfaces en un complemento.
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 y Microsoft.Office.Core.ICustomTaskPaneConsumer en un complemento para Excel, vea Ejemplo Runtime Services.
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 2007.
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 Visual Studio para Office
Conceptos
Programar complementos de nivel de aplicación
Desarrollar soluciones de Office
Llamar a código en complementos de nivel de aplicación desde otras soluciones de Office