Genişletilebilirlik arabirimlerini kullanarak UI özelliklerini özelleştirme

Visual Studio'daki Office geliştirme araçları, VSTO Eklentisinde özel görev bölmeleri, şerit özelleştirmeleri ve Outlook form bölgeleri oluşturmak için bunları kullandığınızda birçok uygulama ayrıntısını işleyen sınıflar ve tasarımcılar sağlar. Ancak, özel gereksinimleriniz varsa her özellik için genişletilebilirlik arabirimini kendiniz de uygulayabilirsiniz.

Şunlar için geçerlidir: Bu konudaki bilgiler VSTO Eklenti projeleri için geçerlidir. Daha fazla bilgi için bkz. Office uygulaması ve proje türüne göre kullanılabilen özellikler.

Microsoft Office, COM VSTO Eklentilerinin şerit gibi belirli özellikleri özelleştirmek için uygulayabileceği bir genişletilebilirlik arabirimi kümesi tanımlar. Bu arabirimler, erişim sağladıkları özellikler üzerinde tam denetim sağlar. Ancak, bu arabirimlerin uygulanması, yönetilen kodda COM birlikte çalışabilirliği hakkında biraz bilgi gerektirir. Bazı durumlarda, bu arabirimlerin programlama modeli .NET Framework'e alışkın olan geliştiriciler için sezgisel değildir.

Visual Studio'daki Office proje şablonlarını kullanarak bir VSTO Eklentisi oluşturduğunuzda, şerit gibi özellikleri özelleştirmek için genişletilebilirlik arabirimlerini uygulamanız gerekmez. Office çalışma zamanı için Visual Studio Araçları bu arabirimleri sizin için uygular. Bunun yerine, Visual Studio tarafından sağlanan daha sezgisel sınıfları ve tasarımcıları kullanabilirsiniz. Ancak, isterseniz doğrudan VSTO Eklentinizde genişletilebilirlik arabirimlerini uygulamaya devam edebilirsiniz.

Visual Studio'un bu özellikler için sağladığı sınıflar ve tasarımcılar hakkında daha fazla bilgi için bkz . Özel görev bölmeleri, Şerit tasarımcısı ve Outlook form bölgeleri oluşturma.

VSTO Eklentisinde uygulayabileceğiniz genişletilebilirlik arabirimleri

Aşağıdaki tabloda uygulayabileceğiniz genişletilebilirlik arabirimleri ve bunları destekleyen uygulamalar listelenmiştir.

Arabirim Açıklama Uygulamalar
IRibbonExtensibility Şerit kullanıcı arabirimini özelleştirmek için bu arabirimi uygulayın. Not: VSTO Eklentinizde varsayılan IRibbonExtensibility bir uygulama oluşturmak için projeye Şerit (XML) öğesi ekleyebilirsiniz. Daha fazla bilgi için bkz . Şerit XML. Excel

InfoPath 2013

InfoPath 2010

Outlook

PowerPoint

Project

Visio

Word
ICustomTaskPaneConsumer Özel görev bölmesi oluşturmak için bu arabirimi uygulayın. Excel

Outlook

PowerPoint

Word
FormRegionStartup Outlook form bölgesi oluşturmak için bu arabirimi uygulayın. Outlook

Microsoft Office tarafından tanımlanan , EncryptionProviderve SignatureProvidergibi IBlogExtensibilitybirkaç genişletilebilirlik arabirimi daha vardır. Visual Studio, Office proje şablonları kullanılarak oluşturulan bir VSTO Eklentisinde bu arabirimlerin uygulanmasını desteklemez.

Genişletilebilirlik arabirimlerini kullanma

Genişletilebilirlik arabirimi kullanarak kullanıcı arabirimi özelliğini özelleştirmek için VSTO Eklenti projenizde uygun arabirimi uygulayın. Ardından, arabirimini RequestService uygulayan sınıfın bir örneğini döndürmek için yöntemini geçersiz kılın.

Outlook için VSTO Eklentisinde , ICustomTaskPaneConsumerve arabirimlerinin nasıl uygulandığını IRibbonExtensibilitygösteren örnek bir uygulama için bkz. Office geliştirme örneklerinde UI Manager FormRegionStartup Örneği.

Genişletilebilirlik arabirimi uygulama örneği

Aşağıdaki kod örneği, özel görev bölmesi oluşturmak için arabirimin ICustomTaskPaneConsumer basit bir uygulamasını gösterir. Bu örnek iki sınıfı tanımlar:

  • sınıfı, TaskPaneHelper özel görev bölmesi oluşturmak ve görüntülemek için uygular ICustomTaskPaneConsumer .

  • sınıfı, TaskPaneUI görev bölmesinin kullanıcı arabirimini sağlar. Sınıfın TaskPaneUI öznitelikleri, microsoft Office uygulaması lications'ın sınıfı bulmasına olanak tanıyan COM'da sınıfı görünür hale getirir. Bu örnekte kullanıcı arabirimi boş UserControlbir kullanıcı arabirimidir, ancak kodu değiştirerek denetimler ekleyebilirsiniz.

    Not

    sınıfını TaskPaneUI COM'da kullanıma açmak için, projenin COM Birlikte Çalışma için Kaydet özelliğini de ayarlamanız gerekir.

    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
    {
    }
    

uygulaması ICustomTaskPaneConsumerhakkında daha fazla bilgi için, Microsoft Office belgelerindeki 2007 Office sisteminde özel görev bölmeleri oluşturma bölümüne bakın.

RequestService yöntemini geçersiz kılma örneği

Aşağıdaki kod örneği, önceki kod örneğinden sınıfının bir örneğini döndürmek için yönteminin TaskPaneHelper nasıl geçersiz kılınduğunu RequestService gösterir. Hangi arabirimin istendiğini belirlemek için serviceGuid parametresinin değerini denetler ve ardından bu arabirimi uygulayan bir nesne döndürür.

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);
}