تخصيص ميزات UI باستخدام الواجهات القابلة للتوسعة
ينطبق على |
---|
تنطبق المعلومات الموجودة في هذا الموضوع فقط على أنواع المشاريع وإصدارات Microsoft Office التالية: لمزيد من المعلومات، راجع الميزات المتوفرة بواسطة تطبيقات Office و نوع المشروع. نوع المشروع
إصدار Microsoft Office
|
The Office development tools in Visual Studio provide classes and designers that handle many implementation details when you use them to create custom task panes, Ribbon customizations, and Outlook form regions in an application-level add-in. However, you can also implement the extensibility interface for each feature yourself if you have special requirements.
نظرة عامة حول الواجهات القابلة للتوسعة
يقوم Microsoft Office بتعريف مجموعة من الواجهات القابلة للتوسعة التي يمكن أن تقوم وظائف COM الإضافية بتطبيقها لتخصيص ميزات معينة مثل "الشريط". توفر هذه الواجهات التحكم الكامل للميزات التي توفر الوصول إليها . ومع ذلك، يتطلب تنفيذ هذه الواجهات بعض المعرفة بإمكانية التشغيل التفاعلى لــ COM في التعليمات البرمجية المدارة . في بعض الحالات، طراز برمجة هذه الواجهات يكون غير مألوف للمطورين الذين اعتادوا على .NET Framework.
عند إنشاء وظيفة إضافية من خلال استخدام قوالب مشروع Office في Visual Studio ، لا يكون عليك تنفيذ الواجهات القابلة للتوسعة لتخصيص ميزات مثل "الشريط". يقوم Visual Studio Tools لوقت تشغيل Office بتنفيذ هذه الواجهات لك. بدلاً من ذلك، يمكنك استخدام مصممين و فئات أكثر بديهية يتم توفيرها من قبل Visual Studio. ومع ذلك، يمكنك الاستمرار في تطبيق الواجهات القابلة للتوسعة مباشرة في الوظيفة الإضافية الخاصة بك إذا أردت.
للحصول على مزيد من المعلومات حول الفئات والمصممين التي يوفرها Visual Studio لهذه الميزات راجع نظرة عامة على أجزاء الإجراءات المخصصة ، مصمم الشريط ، و إنشاء مناطق نموذج Outlook.
واجهات القابلة للتوسعة التي يمكنك تنفيذها في الوظيفة الإضافية
يسرد الجدول التالي الواجهات القابلة للتوسعة التي يمكنك تنفيذها والتطبيقات التي تعتمدها.
الواجهة |
الوصف |
التطبيقات |
---|---|---|
Microsoft.Office.Core.IRibbonExtensibility |
قم بتنفيذ هذه الواجهة لتخصيص واجهة المستخدم الشريطية. لمزيد من المعلومات، راجع كائن IRibbonExtensibility في وثائق Microsoft Office.
ملاحظة
You can add a Ribbon (XML) item to a project to generate a default implementation of Microsoft.Office.Core.IRibbonExtensibility in your add-in.لمزيد من المعلومات، راجع شريط XML.
|
Excel InfoPath “” Outlook PowerPoint Word |
Microsoft.Office.Core.ICustomTaskPaneConsumer |
قم بتنفيذ هذه الواجهة لإنشاء جزء مهام مخصص. لمزيد من المعلومات، راجع كائن ICustomTaskPaneConsumer في وثائق Microsoft Office. |
Excel Outlook PowerPoint Word |
Microsoft.Office.Interop.Outlook.FormRegionStartup |
قم بتنفيذ هذه الواجهة لإنشاء منطقة نموذج Outlook. لمزيد من المعلومات، راجع واجهة FormRegionStartup في وثائق Microsoft Office. |
Outlook |
هناك عدة واجهات أخرى قابلة للتوسعة يتم تعريفها بواسطة Microsoft Office, مثل Microsoft.Office.Core.IBlogExtensibility ، Microsoft.Office.Core.EncryptionProvider ، و Microsoft.Office.Core.SignatureProvider. لا يدعم Visual Studio تطبيق هذه الواجهات في وظيفة إضافية تم إنشاؤها باستخدام قوالب مشروع Office.
استخدام الواجهات القابلة للتوسعة
لتخصيص ميزة UI باستخدام واجهات قابلة للتوسعة ، قم بتنفيذ الواجهة المناسبة في مشروع الوظيفة الإضافية الخاص بك. ثم، تجاوز الأسلوب RequestService لإرجاع مثيل من الفئة التي تنفَّذ الواجهة .
لنموذج من تطبيق يوضح كيفية تنفيذ واجهات Microsoft.Office.Core.IRibbonExtensibility و Microsoft.Office.Core.ICustomTaskPaneConsumer في الوظيفة الإضافية لـ Excel، راجع نماذج تطوير Office وإرشادات تفصيلية.
مثال لتطبيق الواجهة القابلة للتوسعة
يوضح مثال التعليمات البرمجية التالي تطبيق بسيط لواجهة Microsoft.Office.Core.ICustomTaskPaneConsumer لإنشاء جزء مهام مخصص. يحدد هذا المثال فئتين:
تقوم فئةTaskPaneHelper بتنفيذ Microsoft.Office.Core.ICustomTaskPaneConsumer لإنشاء و عرض جزء مهام مخصص .
توفر الفئة TaskPaneUI واجهة المستخدم لجزء المهام . السمات للفئة TaskPaneUI تجعل الفئة مرئية لـ COM ، مما يمكن تطبيقات Microsoft Office من اكتشاف الفئة . في هذا المثال ، واجهة المستخدم هي UserControl فارغة ، ولكن يمكنك إضافة عناصر التحكم عن طريق تعديل التعليمات البرمجية.
ملاحظة
لعرض الفئة TaskPaneUI لـ COM ، يجب عليك أيضاً تعيين الخاصية سَجِّل لـتوافق COM للمشروع. لمزيد من المعلومات، راجع كيفية القيام بما يلي: تسجيل المكوّن لـ توافق 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
{
}
للحصول على معلومات حول تنفيذ Microsoft.Office.Core.ICustomTaskPaneConsumer راجع إنشاء أجزاء المهام المخصصة في نظام Office 2007 في وثائق Microsoft Office.
مثال لتجاوز أسلوب RequestService
يوضح مثال التعليمات البرمجية التالي كيفية تجاوز الأسلوب RequestService لإرجاع مثيل لفئة TaskPaneHelper من مثال التعليمات البرمجية السابق . تقوم بالتحقق من قيمة المعلمة serviceGuid لتحديد أي واجهة يتم طلبها ومن ثم تقوم بإرجاع الكائن الذي يقوم بتنفيذ هذه الواجهة.
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);
}
راجع أيضًا:
المهام
كيفية القيام بما يلي: إنشاء مشاريع Office في Visual Studio
المبادئ
استدعاء تعليمات برمجية في وظائف إضافية على مستوى التطبيق من حلول Office الأخرى
بنية الوظائف الإضافية على مستوى التطبيق
موارد أخرى
نماذج تطوير Office وإرشادات تفصيلية