سؤال

أقوم حاليًا بإنشاء وحدة طباعة صامتة. عنصر التحكم الحالي الذي أستخدمه هو أنه يتأكد من إنشاء مقبض التحكم بالفعل (IsHandleCreated). فعلت كل شيء لخداع هذا دون حظ على الإطلاق.

هل لديك أفكار في الاعتبار حول كيف يمكنني إنشاء مقبض لعنصر التحكم دون عرض أي في الشاشة؟

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

المحلول

حاول الزائد CreateParams الممتلكات getter. في ذلك واضح WS_VISIBLE علَم.

نصائح أخرى

عليك الوصول إلى يتعامل خاصية (ضع النتيجة في متغير وهمية أو شيء من هذا القبيل). انظر في العاكس. يجبر على التعامل مع الخلق.

واجهت نفس المشكلة مع بعض عناصر التحكم الأخرى واستخدمت Control.CreateControl() طريقة:

private void CheckForExistingHandle(Control control)
{
    if (!control.IsHandleCreated)
        control.CreateControl();
}

لكني لا أعرف كيف يعمل مع وحدة طباعة.

لقد قمت بحل مشكلة إنشاء المقبض المزعجة هذه عن طريق الإعدادات WS_Visible of CreationParams. يمكنك إما تجاوز خاصية CreateParams الخاصة بالتحكم أو استدعاء طريقة CreateHandle مع مثيل CreateParams المناسب. انظر حلقة الوصل

استدعاء الطريقة الخاصة CreateHandle سوف يقوم بالعمل.

MethodInfo ch = frm.GetType().GetMethod("CreateHandle", BindingFlags.NonPublic | BindingFlags.Instance);
ch.Invoke(frm, new object[0]);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top