كيفية الكشف عن وقت التصميم في VS.NET 2003 مكتبة التحكم المشروع

StackOverflow https://stackoverflow.com/questions/144898

  •  02-07-2019
  •  | 
  •  

سؤال

رمز أدناه لا يعمل كما هو متوقع للكشف عن إذا كان في وضع التصميم (VS.Net 2003 - مكتبة التحكم):

إذا كان (هذا.الموقع != null && هذا.الموقع.DesignMode == صحيح)
{
// وضع التصميم
}
آخر
{
// وقت التشغيل
}

يتم استخدامه في مجمع المستخدم التحكم المستمد من عنصر تحكم مستخدم آخر ، بما في ذلك عناصر تحكم المستخدم على ذلك.
هل هناك طريقة أخرى للكشف عن وقت التصميم في VS.NET 2003 أو ما هي المشكلة في الكود أعلاه ؟

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

المحلول

DesignMode لن يعمل من داخل منشئ.بعض البدائل (لست متأكدا إذا كانوا يعملون في 1.1) هي

if (System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Designtime)

أو

الاتصال GetService(typeof(IDesignerHost)) ومعرفة ما اذا كان يعود شيئا.

لقد كان أفضل حظا مع الخيار الأول.

نصائح أخرى

أعتقد أن بإمكانك استخدام HttpContext.الحالي == null كما هو موضح في http://west-wind.com/weblog/posts/189.aspx

في .Net 2.0 هناك مراقبة.DesignMode (http://msdn.microsoft.com/en-us/library/system.web.ui.control.designmode.aspx).أعتقد أن لديك أسباب وجيهة البقاء على مقابل 2003 على الرغم من ذلك الترقية قد لا يكون خيارا بالنسبة لك.

التحديث إذا كنت تفعل Winforms ، العنصر.DesignMode (http://msdn.microsoft.com/en-us/library/system.componentmodel.component.designmode.aspx) هو الطريق الصحيح إلى التحقق.لو هذا.الموقع.DesignMode لا يعمل بشكل صحيح ، العنصر.DesignMode قد لا تعمل كما يفعل بالضبط الاختيار تقومون به (الموقع != null && الموقع.DesignMode).

قد يكون هذا بعيد المنال ، ولكن هل أنت متأكد من أن قاعدة الخاص بك التحكم لا تجاوز موقع العقار ؟

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