2008-12-03 4 views
8

मेरे पास एक उपयोगकर्ता नियंत्रण है जिसे मैं बना रहा हूं। इसका उद्देश्य उपयोगकर्ता को कक्षा की स्थिति प्रदर्शित करना है। जाहिर है, इससे कोई फर्क नहीं पड़ता, और आईडीई में नियंत्रण चलने पर चीजों को धीमा कर देगा, जैसे ही आप इसे किसी रूप में जोड़ते हैं।मैं कैसे पता लगा सकता हूं कि आईडीई में उपयोगकर्ता नियंत्रण चल रहा है, डीबग मोड में, या जारी किए गए EXE में?

इस के आसपास काम करने का एक तरीका नियंत्रण बनाए रखना होगा और रन-टाइम पर फ़ॉर्म के नियंत्रण संग्रह में जोड़ा जाएगा। लेकिन यह सही से कम लगता है।

क्या नियंत्रण में ध्वज सेट करने का कोई तरीका है ताकि यह कोड के कुछ हिस्सों को कैसे चल रहा है, इस पर आधारित हो सके?

पेज। मैं सी # और वीएस 2008

उत्तर

15
public static bool IsInRuntimeMode(IComponent component) { 
    bool ret = IsInDesignMode(component); 
    return !ret; 
} 

public static bool IsInDesignMode(IComponent component) { 
    bool ret = false; 
    if (null != component) { 
     ISite site = component.Site; 
     if (null != site) { 
      ret = site.DesignMode; 
     } 
     else if (component is System.Windows.Forms.Control) { 
      IComponent parent = ((System.Windows.Forms.Control)component).Parent; 
      ret = IsInDesignMode(parent); 
     } 
    } 

    return ret; 
} 
+0

बहुत बढ़िया! धन्यवाद। यह मेरे मुकाबले बहुत आसान है! – RichieACC

+0

साइट प्रॉपर्टी हमेशा मेरे पेज ऑब्जेक्ट पर क्यों शून्य है इस पर कोई विचार? – TGnat

+0

क्योंकि वेबफॉर्म डिजाइनर इस परिदृश्य का समर्थन नहीं करता है। मुझे नहीं पता क्यों :(। यह समाधान घटक (गैर यूआई घटकों) डिजाइनर और विनफॉर्म डिजाइनर में काम करता है। इसे गैर-वेब तृतीय पक्ष डिजाइनरों में भी काम करना चाहिए। – TcKs

4

मुझे यह उत्तर किसी अन्य पोस्ट पर मिला और यह मेरी स्थिति के लिए आसान और बेहतर काम करना प्रतीत होता है।

Detecting design mode from a Control's constructor

using System.ComponentModel; 

if (LicenseManager.UsageMode == LicenseUsageMode.Runtime) 
{ 
} 
संबंधित मुद्दे

 संबंधित मुद्दे