Personalizando os recursos de interface do usuário usando Interfaces de extensibilidade
As ferramentas de desenvolvimento do Office em Visual Studio fornecem classes e os designers que lidam com muitos detalhes de implementação, quando você usá-los para criar regiões de formulário do Outlook, as personalizações da faixa de opções e painéis de tarefas personalizados em um suplemento em nível de aplicativo. No entanto, você também pode implementar a interface de extensibilidade para cada recurso mesmo se você tiver requisitos especiais.
Aplicável a: As informações neste tópico se aplicam a projetos de nível de aplicativo para Microsoft Office 2010 e o sistema 2007 do Microsoft Office. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.
Visão geral das Interfaces de extensibilidade
Microsoft Office define um conjunto de interfaces de extensibilidade suplementos COM podem implementar para personalizar determinados recursos como, por exemplo, a faixa de opções. Essas interfaces fornecem controle total sobre os recursos que eles fornecem acesso a. Entretanto, a implementação dessas interfaces requer algum conhecimento de interoperabilidade COM em código gerenciado. Em alguns casos, o modelo de programação dessas interfaces também não é intuitivo para os desenvolvedores que estejam acostumados com o.NET Framework.
Quando você cria um add-in usando os modelos de projeto do Office em Visual Studio, não é necessário implementar as interfaces de extensibilidade para personalizar os recursos, como a faixa de opções. O Visual Studio Tools for Office runtime implementa essas interfaces. Em vez disso, você pode usar mais intuitiva de classes e designers fornecidos pelo Visual Studio. No entanto, você ainda pode implementar as interfaces de extensibilidade diretamente no seu suplemento se desejar.
Para obter mais informações sobre as classes e os designers Visual Studio fornece para esses recursos, consulte Visão geral sobre painéis de tarefas personalizado, Designer de faixa de opções, e Criação de regiões de formulário do Outlook.
Você pode implementar um suplemento de Interfaces de extensibilidade
A tabela a seguir lista as interfaces de extensibilidade, que você pode implementar e os aplicativos que lhes dão suporte.
Interface |
Description |
Applications |
---|---|---|
Implemente essa interface para personalizar a interface do usuário.
Observação
Você pode adicionar um Da faixa de opções (XML) item a um projeto para gerar um padrão Microsoft.Office.Core.IRibbonExtensibility implementação no seu add-in.For more information, see XML da faixa de opções.
|
Excel 2007 e Excel 2010 InfoPath 2010 O Outlook 2007 e o Outlook 2010 PowerPoint 2007 e PowerPoint 2010 Project 2010 Visio 2010 Word 2007 e Word 2010 |
|
Implemente essa interface para criar um painel de tarefas personalizado. |
Excel 2007 e Excel 2010 O Outlook 2007 e o Outlook 2010 PowerPoint 2007 e PowerPoint 2010 Word 2007 e Word 2010 |
|
Implemente essa interface para criar uma região de formulário do Outlook. |
O Outlook 2007 e o Outlook 2010 |
Existem várias outras interfaces de extensibilidade definidos pelo Microsoft Office, como Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvider, e Microsoft.Office.Core.SignatureProvider. Visual Studio não oferece suporte a implementar essas interfaces no suplemento criado usando os modelos de projeto do Office.
Usando Interfaces de extensibilidade
Para personalizar um recurso de interface do usuário usando uma interface de extensibilidade, implemente a interface adequada em seu projeto de suplemento. Em seguida, substituir o RequestService método para retornar uma instância da classe que implementa a interface.
Para um aplicativo de exemplo que demonstra como implementar a Microsoft.Office.Core.IRibbonExtensibility, Microsoft.Office.Core.ICustomTaskPaneConsumer, e Microsoft.Office.Interop.Outlook.FormRegionStartup interfaces em um suplemento para Outlook, consulte o exemplo de Gerenciador de interface do usuário no Amostras de desenvolvimento do Office.
Exemplo de implementação de uma Interface de extensibilidade
O exemplo de código a seguir demonstra uma implementação simples da Microsoft.Office.Core.ICustomTaskPaneConsumer interface para criar um painel de tarefas personalizado. Este exemplo define duas classes:
O TaskPaneHelper classe implementa Microsoft.Office.Core.ICustomTaskPaneConsumer para criar e exibir um painel de tarefas personalizado.
O TaskPaneUI classe fornece a interface do usuário do painel de tarefas. Os atributos para o TaskPaneUI classe tornar a classe visível para COM, que permite que aplicativos de Microsoft Office descobrir a classe. Neste exemplo, a interface do usuário é um vazio UserControl, mas você pode adicionar controles, modificando o código.
Observação Para expor o TaskPaneUI classe COM, você deve também definir o Register for COM Interop propriedade para o projeto. For more information, see Como: Registrar um componente para interoperabilidade 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 obter mais informações sobre como implementar Microsoft.Office.Core.ICustomTaskPaneConsumer, consulte Criação de painéis de tarefas personalizados no 2007 Office System na documentação do Microsoft Office.
Exemplo de substituindo o método RequestService
O exemplo de código a seguir demonstra como substituir o RequestService método para retornar uma instância da TaskPaneHelper classe a partir do exemplo de código anterior. Ele verifica o valor de serviceGuid parâmetro para determinar qual interface está sendo solicitada e, em seguida, retorna um objeto que implementa essa interface.
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);
}
Consulte também
Tarefas
Como: Criar projetos do Office em Visual Studio
Conceitos
Código de chamada no nível do aplicativo Add-ins de outras soluções do Office
Arquitetura dos suplementos de nível de aplicativo
Outros recursos
Exemplos de desenvolvimento do Office e Walkthroughs