مشاركة عبر


القيود البرمجية للعناصر مضيفة وعناصر التحكم

ينطبق على

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

نوع المشروع

  • مشروعات على مستوى المستند

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

إصدار Microsoft Office

  • Excel 2007 و Excel 2010

  • Word 2007 و Word 2010

تم تصميم كل عنصر مضيف وعنصر تحكم مضيف ليتصرف مثل كائن Microsoft Office Word أو Microsoft Office Excel أصلي متوافق، مع الوظائف المضافة. ومع ذلك، توجد بعض اختلافات أساسية بين سلوك عناصر المضيف وعناصر تحكم المضيف وكائنات Office الأصلية في وقت التشغيل.

للحصول على معلومات عامة حول عناصر المضيف وعناصر تحكم المضيف، راجع نظرة عامة حول العناصر المضيفة و عناصر تحكم المضيف.

إنشاء عناصر مضيف برمجيًا

عندما تقوم برمجيًا بإنشاء أو فتح مستند أو مصنف أو ورقة عمل في وقت التشغيل باستخدام طراز كائن Word أو Excel، فإن العنصر ليس عنصرًا مضيفًا. بدلاً من ذلك، الكائن الجديد هو كائن Office أصلي. على سبيل المثال، إذا كنت تستخدم الأسلوب Add لإنشاء مستند Word جديد في وقت التشغيل، فسيكون كائن Microsoft.Office.Interop.Word.Document أصلياً بدلاً من عنصر مضيف Microsoft.Office.Tools.Word.Document. وبالمثل، عندما تقوم بإنشاء ورقة عمل جديدة في وقت التشغيل باستخدام الأسلوب Add، فإنك تحصل على كائن Microsoft.Office.Interop.Excel.Worksheet أصلي بدلاً من عنصر مضيف Microsoft.Office.Tools.Excel.Worksheet.

لا يمكن إنشاء عناصر مضيف في وقت التشغيل في المشاريع على مستوى المستند. يمكن إنشاء عناصر مضيف فقط في وقت التصميم في مشاريع على مستوى المستند. لمزيد من المعلومات، راجع العنصر المضيف الخاص بالمستند ، عنصر مضيف المصنف ، و عنصر مضيف خاص بورقة عمل.

في المشاريع على مستوى التطبيق، يمكنك إنشاء عناصر مضيف Microsoft.Office.Tools.Word.Document أو Microsoft.Office.Tools.Excel.Workbook أو Microsoft.Office.Tools.Excel.Worksheet في وقت التشغيل. لمزيد من المعلومات، راجع توسيع مستندات Word ومصنفات Excel في وظائف إضافية على مستوى التطبيق في وقت التشغيل.

إنشاء عناصر تحكم مضيف برمجيًا

يمكنك برمجيًا إضافة عناصر تحكم مضيف إلى عنصر مضيف Microsoft.Office.Tools.Word.Document أو Microsoft.Office.Tools.Excel.Worksheet في وقت التشغيل. لمزيد من المعلومات، راجع إضافة عناصر تحكم إلى مستندات Office في وقت التشغيل.

لا يمكنك إضافة عناصر تحكم المضيف إلى Microsoft.Office.Interop.Word.Document أو Microsoft.Office.Interop.Excel.Worksheet أصلي.

ملاحظة

لا يمكن إضافة عناصر تحكم المضيف التالية بطريقة برمجية إلى أوراق العمل أو المستندات: XmlMappedRange ، XMLNode و XMLNodes

فهم فروق الأنواع بين عناصر المضيف و عناصر تحكم المضيف وكائنات Office الأصلية

لكل عنصر مضيف وعنصر تحكم مضيف، يوجد كائن Microsoft Office Word أو Microsoft Office Excel أصلي أساسي. يمكنك الوصول إلى الكائن الأساسي باستخدام الخاصية InnerObject للعنصر المضيف أو عنصر تحكم المضيف. ومع ذلك، لا توجد طريقة لتحويل(cast) كائن Office أصلي إلى عنصر المضيف أو عنصر تحكم المضيف المطابق له. إذا حاولت تحويل كائن Office أصلي إلى نوع عنصر مضيف أو عنصر تحكم مضيف، يتم طرح InvalidCastException.

هناك عدة سيناريوهات حيث يمكن للاختلافات بين أنواع عناصر المضيف وعناصر تحكم المضيف وكائنات Office الأصلية الأساسية أن تؤثر على التعليمات البرمجية الخاصة بك.

تمرير عناصر تحكم مضيف إلى الأساليب و الخصاص

في Word، لا يمكنك تمرير عنصر تحكم مضيف إلى أسلوب أو خاصية تتطلب كائن Word أصلي كمعلمة. يجب عليك استخدام الخاصية InnerObject من عنصر تحكم المضيف لإرجاع كائن Word الأصلي الأساسي. على سبيل المثال، يمكنك تمرير كائن Microsoft.Office.Interop.Word.Bookmark إلى أسلوب بواسطة تمرير الخاصية InnerObject من عنصر تحكم المضيف Microsoft.Office.Tools.Word.Bookmark إلى الأسلوب.

الثقة من Outlook إضافة-في استناداً إلى التعليمات برمجية لتجزئة DLL يؤشر إدخال إضافة-في.InnerObject

  • عندما يتوقع الأسلوب أو تتوقع الخاصية كائن Excel الأساسي.

  • عندما يتم تعيين Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute إلى false في مشروع يستهدف 3.5 NET Framework. ويتوقع الأسلوب أو تتوقع الخاصية Object بدلاً من كائن Excel الأساسي. لمزيد من المعلومات حول Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute، راجع تنسيق البيانات في Excel بالإعدادات الإقليمية المتعددة.

يقوم المثال التالي بإنشاء عنصر تحكم Microsoft.Office.Tools.Excel.NamedRange ويمرره إلى الأسلوب AutoFill. تستخدم التعليمة البرمجية الخاصية InnerObject للنطاق المسمى لإرجاع Microsoft.Office.Interop.Excel.RangeOffice الأساسي المطلوب من قِبَل الأسلوب AutoFill.

Me.Range("A1").Value2 = "Monday"
Me.Range("A2").Value2 = "Tuesday"

Dim dayRange As Microsoft.Office.Tools.Excel.NamedRange = _
    Me.Controls.AddNamedRange(Me.Range("A1", "A7"), "dayRange")
Me.Range("A1", "A2").AutoFill(dayRange.InnerObject, Excel.XlAutoFillType.xlFillDays)
this.Range["A1", missing].Value2 = "Monday";
this.Range["A2", missing].Value2 = "Tuesday";

Microsoft.Office.Tools.Excel.NamedRange dayRange = 
    this.Controls.AddNamedRange(this.Range["A1", "A7"], "dayRange");
this.Range["A1", "A2"].AutoFill(dayRange.InnerObject, Excel.XlAutoFillType.xlFillDays);

أنواع إرجاع أساليب وخصائص Office الأصلية

معظم أساليب وخصائص عناصر المضيف تقوم بإرجاع كائن Office الأصلي الأساسي الذى يعتمد عليه عنصر المضيف. على سبيل المثال، تقوم الخاصية Parent من عنصر تحكم مضيف NamedRange في Excel بإرجاع كائن Microsoft.Office.Interop.Excel.Worksheet بدلاً من عنصر مضيف Microsoft.Office.Tools.Excel.Worksheet. كذلك تقوم الخاصية Parent من عنصر تحكم مضيف RichTextContentControl في Word بإرجاع كائن Microsoft.Office.Interop.Word.Document بدلاً من عنصر مضيف Microsoft.Office.Tools.Word.Document.

الوصول إلى مجموعات عناصر تحكم المضيف

Visual Studio Tools لوقت تشغيل Office لا توفر مجموعات فردية لكل نوع من عنصر تحكم المضيف. All Outlook إضافة-زر 'Ins' created بواسطة using Controls استخدم the same entry point DLL (VSTOLoader.dll for Outlook 2007 إضافة-زر 'Ins'). لتعطيل زر 'Ins' الإضافية في Microsoft المكتب 2010 تطبيقات Excel 2007، PowerPoint 2007 أو الكلمة 2007Microsoft.Office.Tools.Word.Bookmark

Dim targetControl As Object
For Each targetControl In Me.Controls

    If TypeOf (targetControl) Is Microsoft.Office.Tools.Word.Bookmark Then
        Dim bookMark As Microsoft.Office.Tools.Word.Bookmark = _
            CType(targetControl, Microsoft.Office.Tools.Word.Bookmark)

        ' Do some work with the book mark here.
    End If
Next
foreach (object targetControl in this.Controls)
{
    Microsoft.Office.Tools.Word.Bookmark bookMark =
        targetControl as Microsoft.Office.Tools.Word.Bookmark;

    if (bookMark != null)
    {
        // Do some work with the bookmark here.
    }
}

انقر فوق علامة تبويب Controlsملف (ل Microsoft المكتب تطبيقات 2010) أو Microsoft المكتب زر (for 2007 Microsoft المكتب applications).إضافة عناصر تحكم إلى مستندات Office في وقت التشغيل

تتضمن نماذج كائن Word وExcel خصائص تقوم بالكشف عن مجموعات من عناصر تحكم أصلية على المستندات وأوراق العمل. لا يمكنك الوصول إلى عناصر التحكم المدارة باستخدام هذه الخصائص. على سبيل المثال، ليس من الممكن تعداد كل عنصر تحكم مضيف Microsoft.Office.Tools.Word.Bookmark في مستند ما باستخدام الخاصية Bookmarks من Microsoft.Office.Interop.Word.Document أو الخاصية Bookmarks من Microsoft.Office.Tools.Word.Document. تتضمن هذه الخصائص عناصر تحكم Microsoft.Office.Interop.Word.Bookmark فقط في المستند. تحتوي على عناصر تحكم مضيف Microsoft.Office.Tools.Word.Bookmark في المستند.

إلى تعطيل زر 'زر 'Ins'' الإضافية في InfoPath 2007 أو Outlook 2007 مشروع 2007 أو برنامج Visio 2007

من من ContosoOutlookAddIn.dll.بيان ملف، قم بنسخ أي تبعيات اليثّبت وأي ملف تبعيات، مثل من ContosoOutlookAddIn.dll يثّبت تبعية. من من ContosoExcelWorkbook.dll.بيان ملف، قم بنسخ أي تبعيات اليثّبت وأي ملف تبعيات، مثل من ContosoExcelWorkbook.dll يثّبت تبعية. ‏‫Visual Studio بفتح مصنف Excel جديد في المصمم و يضيف مشروع "الخاص بي بسيطة بيانات ربط" إلى من InnerObjectمستكشف الحل.

لمزيد من المعلومات حول كيفية إلى تغيير قائمة التضمين باستخدام 3.5 إطار عمل.NET، راجع Microsoft.Office.Interop.Word.ContentControl.Checked In Word 2010 projects that target the .NET Framework 3.5, the Microsoft.Office.Tools.Word.ContentControl host control does not have a Checked property. The following code example demonstrates how to use the InnerObject property to access the Checked property of the underlying Microsoft.Office.Interop.Word.ContentControl object.

Me.Paragraphs(1).Range.InsertParagraphBefore()
Me.Paragraphs(1).Range.Select()
Dim checkBoxControl1 As Microsoft.Office.Tools.Word.ContentControl =
    Me.Controls.AddContentControl("checkBoxControl1", Word.WdContentControlType.wdContentControlCheckBox)

' The following line of code compiles in projects that target the .NET Framework 4, but it does not compile 
' in projects that target the .NET Framework 3.5.
checkBoxControl1.Checked = True

' In projects that target the .NET Framework 3.5, use the following code.
checkBoxControl1.InnerObject.Checked = True
this.Paragraphs[1].Range.InsertParagraphBefore();
this.Paragraphs[1].Range.Select();
Microsoft.Office.Tools.Word.ContentControl checkBoxControl1 = 
    this.Controls.AddContentControl("checkBoxControl1", Word.WdContentControlType.wdContentControlCheckBox);

// The following line of code compiles in projects that target the .NET Framework 4, but it does not compile 
// in projects that target the .NET Framework 3.5.
checkBoxControl1.Checked = true;

// In projects that target the .NET Framework 3.5, use the following code.
checkBoxControl1.InnerObject.Checked = true;

راجع أيضًا:

المرجع

Worksheet.Controls

Document.Controls

المبادئ

نظرة عامة حول العناصر المضيفة و عناصر تحكم المضيف

أتمتة Word عن طريق استخدام الكائنات الموسعة

أتمتة Excel عن طريق استخدام الكائنات الموسعة

عنصر مضيف خاص بورقة عمل

عنصر مضيف المصنف

العنصر المضيف الخاص بالمستند