كيفية الكشف عن وقت التصميم في VS.NET 2003 مكتبة التحكم المشروع
-
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).
قد يكون هذا بعيد المنال ، ولكن هل أنت متأكد من أن قاعدة الخاص بك التحكم لا تجاوز موقع العقار ؟