مشاركة عبر


تخصيص ميزات UI باستخدام الواجهات القابلة للتوسعة

ينطبق على

تنطبق المعلومات الموجودة في هذا الموضوع فقط على أنواع المشاريع وإصدارات Microsoft Office التالية: لمزيد من المعلومات، راجع الميزات المتوفرة بواسطة تطبيقات Office و نوع المشروع.

نوع المشروع

  • مشروعات على مستوى التطبيق

إصدار Microsoft Office

  • نظام 2007 Microsoft Office

  • Microsoft Office 2010

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 وإرشادات تفصيلية

برمجة وظائف إضافية على مستوى التطبيق

تطوير حلول Office