سؤال

أقوم بتطوير أول برنامج إضافي لبرنامج Word 2007، وقمت بإضافة OfficeRibbon إلى مشروعي.في معالج النقر على الزر، أرغب في الإشارة إلى الملف الحالي Word.Document أو Word.Application.

أحاول الحصول على مرجع عبر OfficeRibbon.Context الخاصية، والتي تقول الوثائق أنها يجب أن تشير إلى التيار Application هدف.ومع ذلك، فهو دائما null.

لا أحد يعرف سواء

أ) إذا كان هناك شيء يجب علي القيام به OfficeRibbon.Context تظهر بشكل صحيح بالسكان؟
ب) إذا كانت هناك طريقة أخرى يمكنني من خلالها الحصول على مرجع لتطبيق Word أو مستند Word النشط؟

ملحوظات:

  • أنا أستخدم VS2008 SP1

  • يبدو أن الشريط قد تمت تهيئته بشكل جيد:يتم عرض الشريط بشكل صحيح في Word؛يمكنني أن أقوم بتمرير مصحح الأخطاء خلال كل من المنشئ وأعضاء OnLoad؛يتم تنفيذ معالجات النقر على الزر بشكل صحيح.

  • هنا المساعدة عبر الإنترنت لهذا العقار;

خاصية OfficeRibbon.Context

C#
public Object Context { get; internal set; }

كائن يمثل نافذة Inspector أو مثيل التطبيق المرتبط بكائن OfficeRibbon هذا.

ملاحظات

في Outlook، تشير هذه الخاصية إلى نافذة المفتش التي يتم عرض OfficeRibbon فيها.

في Excel وWord وPowerPoint، تقوم هذه الخاصية بإرجاع مثيل التطبيق الذي يتم عرض OfficeRibbon فيه.

هل كانت مفيدة؟

المحلول

لقد واجهت هذه المشكلة أيضًا أثناء إنشاء Excel 2007 AddIn باستخدام VS2008 SP1.كان الحل البديل الذي استخدمته هو تخزين التطبيق في ملف internal static الخاصية في فئة AddIn الرئيسية ثم قم بالإشارة إليها في معالج الأحداث في الشريط الخاص بي:

public partial class ThisAddIn
{
    internal static Application Context { get; private set; }

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        Context = Application;
    }
    ...
}

public partial class MyRibbon : OfficeRibbon
{
    private void button1_Click(object sender, RibbonControlEventArgs e)
    {
        DoStuffWithApplication(ThisAddIn.Context);
    }
    ...
}

نصائح أخرى

حاول الرجوع إلى المستند باستخدام:

Globals.ThisDocument.[some item]

مرجع MSDN

احصل عليه من:

Globals.ThisAddIn.Application

على الرغم من أنني لا أعرف الكثير عن التغييرات في نموذج كائن Word لـ Office 2007، فإليك شرحي باستخدام معرفتي بـ VBA.

التطبيق هو كائن متاح عالميًا.كما يجب أن يساعدك Application.ActiveDocument على التعامل مع المستند الحالي.

المضاربة:كيف تحاول إضافة الشريط؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top