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řídy TaskPaneUI 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);
}