Personalizzazione delle funzionalità dell'interfaccia utente utilizzando le interfacce di estensibilità
Aggiornamento: novembre 2007
Si applica a |
---|
Le informazioni contenute in questo argomento riguardano solo i progetti Visual Studio Tools per Office e le versioni di Microsoft Office specificati. Tipo di progetto
Versione Microsoft Office
Per ulteriori informazioni, vedere la classe Funzionalità disponibili in base ai tipi di progetto e applicazione. |
Visual Studio Tools per Office fornisce classi e finestre di progettazione che gestiscono molti dettagli di implementazione quando vengono utilizzate per creare riquadri attività personalizzati, le personalizzazioni della barra multifunzione e le aree di modulo di Outlook in un componente aggiuntivo a livello di applicazione. Tuttavia, se sono necessari requisiti speciali è anche possibile implementare l'interfaccia di estensibilità per ogni funzionalità.
Cenni preliminari sulle interfacce di estensibilità
Le applicazioni di Microsoft Office System 2007 definiscono un insieme di interfacce di estensibilità che i componenti aggiuntivi COM possono implementare per personalizzare determinate funzionalità dell'interfaccia utente. Visual Studio Tools per Office semplifica questo processo implementando automaticamente queste interfacce e fornendo classi e finestre di progettazione utilizzabili direttamente. Tuttavia, è anche possibile implementare direttamente le interfacce di estensibilità nel componente aggiuntivo.
Per ulteriori informazioni sulle classi e sulle finestre di progettazione fornite da Visual Studio Tools per Office per le funzionalità, vedere Cenni preliminari sui riquadri attività personalizzati, Finestra di progettazione della barra multifunzione e Creazione di aree di modulo di Outlook.
Interfacce di estensibilità implementabili in un componente aggiuntivo
Nella tabella seguente sono elencate le interfacce di estensibilità implementabili e le applicazioni che le supportano.
Interfaccia |
Descrizione |
Applicazioni |
---|---|---|
Microsoft.Office.Core.IRibbonExtensibility |
Implementare questa interfaccia per personalizzare l'interfaccia utente della barra multifunzione. Per ulteriori informazioni, vedere Oggetto IRibbonExtensibility nella documentazione di Microsoft Office 2007. ![]()
È possibile aggiungere un elemento Barra multifunzione (XML) in un progetto per generare un'implementazione predefinita di Microsoft.Office.Core.IRibbonExtensibility nel componente aggiuntivo. Per ulteriori informazioni, vedere Elemento XML della barra multifunzione.
|
Excel 2007 InfoPath 2007 Outlook 2007 PowerPoint 2007 Word 2007 |
Microsoft.Office.Core.ICustomTaskPaneConsumer |
Implementare questa interfaccia per creare un riquadro attività personalizzato. Per ulteriori informazioni, vedere Oggetto ICustomTaskPaneConsumer nella documentazione di Microsoft Office 2007. |
Excel 2007 Outlook 2007 PowerPoint 2007 Word 2007 |
Microsoft.Office.Interop.Outlook.FormRegionStartup |
Implementare questa interfaccia per creare un'area di modulo Outlook. Per ulteriori informazioni, vedere Oggetto FormRegionStartup nella documentazione di Microsoft Office 2007. |
Outlook 2007 |
Esistono diverse altre interfacce di estensibilità definite dalle applicazioni di Microsoft Office System 2007, ad esempio Microsoft.Office.Core.IBlogExtensibility, Microsoft.Office.Core.EncryptionProvidere Microsoft.Office.Core.SignatureProvider. Visual Studio Tools per Office non supporta l'implementazione di queste interfacce in un componente aggiuntivo.
Utilizzo delle interfacce di estensibilità
Per personalizzare una funzionalità dell'interfaccia utente utilizzando un'interfaccia di estensibilità, implementare l'interfaccia appropriata nel progetto del componente aggiuntivo. Eseguire quindi l'override del metodo RequestService in modo da ottenere un'istanza della classe che implementa l'interfaccia.
Per un'applicazione di esempio che illustra come implementare le interfacce Microsoft.Office.Core.IRibbonExtensibility e Microsoft.Office.Core.ICustomTaskPaneConsumer in un componente aggiuntivo per Excel, vedere Esempio di servizi di runtime.
Esempio di implementazione di una interfaccia di estensibilità
Nell'esempio di codice riportato di seguito viene illustrata l'implementazione dell'interfaccia Microsoft.Office.Core.ICustomTaskPaneConsumer per creare un riquadro attività personalizzato. Nell'esempio vengono definite due classi.
La classe TaskPaneHelper implementa Microsoft.Office.Core.ICustomTaskPaneConsumer per creare e visualizzare un riquadro attività personalizzato.
La classe TaskPaneUI fornisce l'interfaccia utente del riquadro attività. Gli attributi della classe TaskPaneUI rendono la classe visibile a COM, permettendo alle applicazioni di Microsoft Office di individuare la classe. In questo esempio, UserControl è un'interfaccia utente vuota, ma è possibile aggiungere i controlli modificando il codice.
Nota:
Per esporre la classe TaskPaneUI a COM è necessario impostare anche la proprietà Registra per interoperabilità COM per il progetto. Per ulteriori informazioni, vedere Procedura: registrare un componente per l'interoperabilità 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
{
}
Per ulteriori informazioni sull'implementazione di Microsoft.Office.Core.ICustomTaskPaneConsumer, vedere Creating Custom Task Panes in the 2007 Office System nella documentazione di Microsoft Office 2007 (informazioni in lingua inglese).
Esempio di override del metodo RequestService
Nell'esempio di codice riportato di seguito viene illustrato come eseguire l'override del metodo RequestService per ottenere un'istanza della classe TaskPaneHelper dall'esempio di codice precedente. Viene verificato il valore del parametro serviceGuid per determinare l'interfaccia necessaria e quindi restituire un oggetto che implementi l'interfaccia.
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);
}
Vedere anche
Attività
Procedura: creare progetti Visual Studio Tools per Office
Concetti
Programmazione di componenti aggiuntivi a livello di applicazione
Elementi host di componenti aggiuntivi
Chiamata di codice nei componenti aggiuntivi a livello di applicazione da altre soluzioni Office
Architettura dei componenti aggiuntivi a livello di applicazione