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ınTaskPaneUI
ö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);
}