الحصول على كائنات موسّعة من كائنات Office أصلية في تخصيصات على مستوى المستند
ينطبق على |
---|
تنطبق المعلومات الموجودة في هذا الموضوع فقط على أنواع المشاريع وإصدارات Microsoft Office التالية: لمزيد من المعلومات، راجع الميزات المتوفرة بواسطة تطبيقات Office و نوع المشروع. نوع المشروع
إصدار Microsoft Office
|
تتلقي العديد من معالجات الأحداث لأحداث Office كائن Office أصلي يمثل المصنف أو ورقة العمل أو المستند الذي رفع الحدث. في بعض الحالات، قد ترغب في تشغيل بعض التعليمات البرمجية فقط إذا قام المصنف أو المستند في التخصيص على مستوى المستند الخاص بك برفع الحدث. على سبيل المثال، في تخصيص على مستوى المستند لـ Excel، قد تحتاج إلى تشغيل بعض التعليمات البرمجية عند تنشيط المستخدم لأحد عناصر المضيف Microsoft.Office.Tools.Excel.Worksheet في التخصيص، ولكن ليس عند تنشيط المستخدم لورقة عمل في مصنف آخر مفتوح في نفس الوقت.
عند حصولك على كائن Office أصلي، يمكنك اختبار ما إذا كان قد تم توسيع ذلك الكائن إلى عنصر مضيف أو عنصر تحكم مضيف Microsoft.Office.Tools.Excel.ListObject في تخصيص على مستوى المستند.
عناصر المضيف وعناصر تحكم المضيف هي أنواع متوفرة من قبل Visual Studio Tools لوقت تشغيل Office الذي يضيف وظيفة للكائنات الموجودة أصلًا في نماذج كائن Word أو Excel (تسمى كائنات Office أصلية). بشكل جماعي، عناصر المضيف وعناصر تحكم المضيف تدعى أيضًا كائنات موسعة. لمزيد من المعلومات حول عناصر المضيف وعناصر تحكم المضيف، راجع نظرة عامة حول العناصر المضيفة و عناصر تحكم المضيف.
استخدام الأسلوبين GetVstoObject و HasVstoObject
إلى إنشاء مهمة، استخدم عنصر إنشاء HasVstoObject الطريقة الكائن، والمرور في القيمة للمعلمة.GetVstoObject كائن ContactItem
كائن تمثل إحدى جهات اتصال في المجلد جهات الاتصال.
In projects that target the .NET Framework 4, use the Globals.Factory.GetVstoObject or Globals.Factory.HasVstoObject method, and pass in the native Word or Excel object (such as a Microsoft.Office.Interop.Word.Document or Microsoft.Office.Interop.Excel.Worksheet) that you want to test.
إذا كنت ترغب فقط في تحديد ما إذا كان لدى كائن Office الأصلي كائن موسع في التخصيص الخاص بك، استخدم الأسلوب HasVstoObject. يقوم هذا الأسلوب بإرجاع true إذا كان كائن Office الأصلي يحتوي على كائن موسع، وإلا فـ false.
إذا كنت تريد الحصول على الكائن الموسع، استخدم الأسلوب GetVstoObject. يقوم هذا الأسلوب بإرجاع كائن Microsoft.Office.Tools.Excel.ListObject أو Microsoft.Office.Tools.Excel.Workbook أو Microsoft.Office.Tools.Excel.Worksheet أو Microsoft.Office.Tools.Word.Document إذا كان لدى كائن Office الأصلي واحد. وإلا، فيقوم GetVstoObject بإرجاع null. على سبيل المثال، الأسلوب GetVstoObject من كائن Microsoft.Office.Interop.Word.Document يقوم بإرجاع Microsoft.Office.Tools.Word.Document إذا كان Microsoft.Office.Interop.Word.Document هو الكائن الأساسي للمستند في مشروع مستند Word الخاص بك.
ملاحظة
To use the GetVstoObject and HasVstoObject methods in document-level projects that target the .NET Framework 3.5, you must add using (for C#) or Imports (for Visual Basic) statements for the Microsoft.Office.Tools.Excel.Extensions or Microsoft.Office.Tools.Word.Extensions namespaces to the top of your code file. The GetVstoObject and HasVstoObject methods are implemented as extension methods, and these statements enable you to call these methods.
تحديد ما إذا كان قد قام عنصر مضيف برفع حدث ما
تشرح أمثلة التعليمات البرمجية التالية الأسلوبين HasVstoObject وGetVstoObject. كلا المثالين يقومان بمعالجة الحدث SheetActivate من الفئة ThisWorkbook في مشروع مصنف Excel.
المثال الأول يحدد ما إذا كان أحد عناصر المضيف Microsoft.Office.Tools.Excel.Worksheet تم تنشيطه عن طريق مقارنة المعلمة Sh بالخاصية InnerObject لكل عنصر مضيف افتراضي.
Sub ThisWorkbook_SheetActivate1(ByVal Sh As Object) Handles Me.SheetActivate
Dim vstoWorksheet As Microsoft.Office.Tools.Excel.Worksheet = Nothing
If Type.ReferenceEquals(Globals.Sheet1.InnerObject, Sh) Then
vstoWorksheet = Globals.Sheet1.Base
ElseIf Type.ReferenceEquals(Globals.Sheet2.InnerObject, Sh) Then
vstoWorksheet = Globals.Sheet2.Base
ElseIf Type.ReferenceEquals(Globals.Sheet3.InnerObject, Sh) Then
vstoWorksheet = Globals.Sheet3.Base
End If
If vstoWorksheet IsNot Nothing Then
' Do something with the VSTO worksheet here.
End If
End Sub
void ThisWorkbook_SheetActivate1(object Sh)
{
Microsoft.Office.Tools.Excel.Worksheet vstoWorksheet = null;
if (Type.ReferenceEquals(Globals.Sheet1.InnerObject, Sh))
vstoWorksheet = Globals.Sheet1.Base;
else if (Type.ReferenceEquals(Globals.Sheet2.InnerObject, Sh))
vstoWorksheet = Globals.Sheet2.Base;
else if (Type.ReferenceEquals(Globals.Sheet3.InnerObject, Sh))
vstoWorksheet = Globals.Sheet3.Base;
if (vstoWorksheet != null)
{
// Do something with the VSTO worksheet here.
}
}
The next example simplifies this process by using the HasVstoObject and GetVstoObject methods of the Sh parameter. إنشاء مشروع المستوى المستندات أو المستوى تطبيق لبرنامج الكلمة 2007..NET Framework 4
Private Sub ThisWorkbook_SheetActivate2(ByVal Sh As Object)
Dim vstoWorksheet As Microsoft.Office.Tools.Excel.Worksheet = Nothing
Dim interopWorksheet As Microsoft.Office.Interop.Excel.Worksheet =
CType(Sh, Microsoft.Office.Interop.Excel.Worksheet)
If interopWorksheet IsNot Nothing AndAlso
Globals.Factory.HasVstoObject(interopWorksheet) Then
vstoWorksheet = Globals.Factory.GetVstoObject(interopWorksheet)
End If
If vstoWorksheet IsNot Nothing Then
' Do something with the VSTO worksheet here.
End If
End Sub
void ThisWorkbook_SheetActivate2(object Sh)
{
Microsoft.Office.Tools.Excel.Worksheet vstoWorksheet = null;
Microsoft.Office.Interop.Excel.Worksheet interopWorksheet =
Sh as Microsoft.Office.Interop.Excel.Worksheet;
if (interopWorksheet != null && Globals.Factory.HasVstoObject(interopWorksheet))
{
vstoWorksheet = Globals.Factory.GetVstoObject(interopWorksheet);
}
if (vstoWorksheet != null)
{
// Do something with the VSTO worksheet here.
}
}
يوفر هذا الموضوع نظرة عامة حول أنواع حلول المكتب التي يمكنك إنشاء باستخدام أدوات تطوير المكتب في .
Sub ThisWorkbook_SheetActivate2(ByVal Sh As Object) Handles Me.SheetActivate
Dim vstoWorksheet As Microsoft.Office.Tools.Excel.Worksheet = Nothing
Dim interopWorksheet As Microsoft.Office.Interop.Excel.Worksheet = _
CType(Sh, Microsoft.Office.Interop.Excel.Worksheet)
If interopWorksheet IsNot Nothing AndAlso _
interopWorksheet.HasVstoObject() Then
vstoWorksheet = interopWorksheet.GetVstoObject()
End If
If vstoWorksheet IsNot Nothing Then
' Do something with the VSTO worksheet here.
End If
End Sub
void ThisWorkbook_SheetActivate2(object Sh)
{
Microsoft.Office.Tools.Excel.Worksheet vstoWorksheet = null;
Microsoft.Office.Interop.Excel.Worksheet interopWorksheet =
Sh as Microsoft.Office.Interop.Excel.Worksheet;
if (interopWorksheet != null && interopWorksheet.HasVstoObject())
{
vstoWorksheet = interopWorksheet.GetVstoObject();
}
if (vstoWorksheet != null)
{
// Do something with the VSTO worksheet here.
}
}
إنشاء عناصر مضيف في وقت التشغيل
في مشاريع على مستوى المستند لا يمكن استخدام الأسلوب GetVstoObject لإنشاء عنصر مضيف جديد في وقت التشغيل. يمكنك استخدام هذا الأسلوب فقط للاتصال بعناصر مضيف موجودة تم إنشاؤها في مشروعك في وقت التصميم. لمزيد من المعلومات، راجع القيود البرمجية للعناصر مضيفة وعناصر التحكم.
في مشاريع على مستوى التطبيق، يمكنك استخدام GetVstoObject لإنشاء عناصر مضيف جديدة في وقت التشغيل. لمزيد من المعلومات، راجع توسيع مستندات Word ومصنفات Excel في وظائف إضافية على مستوى التطبيق في وقت التشغيل.
راجع أيضًا:
المرجع
أساليب ملحق (C# البرمجة الدليل)
المبادئ
نظرة عامة حول العناصر المضيفة و عناصر تحكم المضيف
توسيع مستندات Word ومصنفات Excel في وظائف إضافية على مستوى التطبيق في وقت التشغيل