Přizpůsobení funkcí uživatelského rozhraní pomocí rozhraní rozšiřitelnosti
Vývojové nástroje Office v sadě Visual Studio poskytují třídy a návrháři, kteří zpracovávají mnoho podrobností implementace, když je použijete k vytváření vlastních podoken úloh, přizpůsobení pásu karet a oblastí formulářů Outlooku v doplňku VSTO. Pokud však máte zvláštní požadavky, můžete také implementovat rozhraní rozšiřitelnosti pro každou funkci sami.
Platí pro: Informace v tomto tématu platí pro projekty doplňků VSTO. Další informace naleznete v tématu Funkce dostupné aplikace Office lication a typu projektu.
systém Microsoft Office definuje sadu rozhraní rozšiřitelnosti, která mohou doplňky COM VSTO implementovat za účelem přizpůsobení určitých funkcí, jako je pás karet. Tato rozhraní poskytují úplnou kontrolu nad funkcemi, ke kterým poskytují přístup. Implementace těchto rozhraní však vyžaduje určité znalosti interoperability modelu COM ve spravovaném kódu. V některých případech programovací model těchto rozhraní také není intuitivní pro vývojáře, kteří jsou zvyklí na rozhraní .NET Framework.
Když vytvoříte doplněk VSTO pomocí šablon projektů Office v sadě Visual Studio, nemusíte implementovat rozhraní rozšiřitelnosti pro přizpůsobení funkcí, jako je pás karet. Visual Studio Tools for Office runtime implementuje tato rozhraní za vás. Místo toho můžete používat intuitivnější třídy a návrháře poskytované sadou Visual Studio. Pokud ale chcete, můžete rozhraní rozšiřitelnosti implementovat přímo v doplňku VSTO.
Další informace o třídách a návrhářích, které sada Visual Studio poskytuje pro tyto funkce, najdete v tématu Vlastní podokna úloh, návrhář pásu karet a vytváření oblastí formulářů aplikace Outlook.
Rozhraní rozšiřitelnosti, která můžete implementovat v doplňku VSTO
Následující tabulka uvádí rozhraní rozšiřitelnosti, která můžete implementovat, a aplikace, které je podporují.
Rozhraní | Popis | Aplikace |
---|---|---|
IRibbonExtensibility | Implementujte toto rozhraní pro přizpůsobení uživatelského rozhraní pásu karet. Poznámka: Do projektu můžete přidat položku pásu karet (XML), která vygeneruje výchozí IRibbonExtensibility implementaci v doplňku VSTO. Další informace najdete v tématu XML pásu karet. | Aplikace Excel InfoPath 2013 InfoPath 2010 Outlook PowerPoint Project Visio Word |
ICustomTaskPaneConsumer | Implementujte toto rozhraní pro vytvoření vlastního podokna úloh. | Aplikace Excel Outlook PowerPoint Word |
FormRegionStartup | Implementujte toto rozhraní pro vytvoření oblasti formuláře aplikace Outlook. | Outlook |
Existuje několik dalších rozhraní rozšiřitelnosti, která jsou definována systém Microsoft Office, například IBlogExtensibility, EncryptionProvidera SignatureProvider. Visual Studio nepodporuje implementaci těchto rozhraní v doplňku VSTO vytvořeném pomocí šablon projektů Office.
Použití rozhraní rozšiřitelnosti
Pokud chcete přizpůsobit funkci uživatelského rozhraní pomocí rozhraní rozšiřitelnosti, implementujte příslušné rozhraní do projektu doplňku VSTO. Pak přepište metodu RequestService pro vrácení instance třídy, která implementuje rozhraní.
Ukázkovou aplikaci, která ukazuje, jak implementovat IRibbonExtensibilityrozhraní ICustomTaskPaneConsumera FormRegionStartup rozhraní v doplňku VSTO pro Outlook, najdete v ukázce Správce uživatelského rozhraní v ukázkách vývoje pro Office.
Příklad implementace rozhraní rozšiřitelnosti
Následující příklad kódu ukazuje jednoduchou implementaci ICustomTaskPaneConsumer rozhraní pro vytvoření vlastního podokna úloh. Tento příklad definuje dvě třídy:
Třída
TaskPaneHelper
implementuje ICustomTaskPaneConsumer vytvoření a zobrazení vlastního podokna úloh.Třída
TaskPaneUI
poskytuje uživatelské rozhraní podokna úloh. Atributy třídyTaskPaneUI
zviditelní třídu modelu COM, což umožňuje systém Microsoft Office aplikacím zjistit třídu. V tomto příkladu je uživatelské rozhraní prázdné UserControl, ale ovládací prvky můžete přidat úpravou kódu.Poznámka:
Chcete-li vystavit
TaskPaneUI
třídu modelu COM, musíte také nastavit Register for COM Interop vlastnost projektu.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"); 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 { }
Další informace o implementaci ICustomTaskPaneConsumernaleznete v tématu Vytváření vlastních podoken úloh v systému Office 2007 v dokumentaci systém Microsoft Office.
Příklad přepsání metody RequestService
Následující příklad kódu ukazuje, jak přepsat metodu RequestService pro vrácení instance TaskPaneHelper
třídy z předchozího příkladu kódu. Zkontroluje hodnotu parametru serviceGuid , aby určil, které rozhraní je požadováno, a poté vrátí objekt, který implementuje toto rozhraní.
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);
}