2013-06-27 7 views
5

पर डिज़ाइनर खोलने में त्रुटि मुझे विंडोज सीई एप्लिकेशन में विरासत में फॉर्म खोलने में समस्या हो रही है। यह एक प्रोजेक्ट है जिसे मैं एक पूर्व कर्मचारी से ले रहा हूं, लेकिन कुछ मोबाइल उपकरणों पर संकलित संस्करण चल रहे हैं, इसलिए मुझे लगता है कि यह खोलने में सक्षम होना चाहिए। मेरे पास सही वीएस संस्करण (2008) है और समाधान की सफाई करने और समाधान के पुनर्निर्माण की कोशिश की है। समाधान को तैनात करते समय यह एक आकर्षण की तरह काम करता है।विरासत फ़ॉर्म

To prevent possible data loss before loading the designer, the following errors must be resolved: 

Object reference not set to an instance of an object. 

स्टैक ट्रेस:: जैसे ही मैंने विरासत में मिला रूपों के डिजाइनर में जाने के लिए प्रयास करते हैं, मैं निम्नलिखित त्रुटि मिलती है

at MyApp.frmBase.UpdateOnline() in C:\Users\Corne\Documents\Visual Studio 2008\Projects\Test\MyApp\MyApp\frmBase.cs:line 35 
at MyApp.frmBase.frmBase_Load(Object sender, EventArgs e) in C:\Users\Corne\Documents\Visual Studio 2008\Projects\Test\MyApp\MyApp\frmBase.cs:line 30 
at System.Windows.Forms.Form.OnLoad(EventArgs e) 
at System.Windows.Forms.Form.OnCreateControl() 
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) 
at System.Windows.Forms.Control.CreateControl() 
at System.Windows.Forms.Control.SetVisibleCore(Boolean value) 
at System.Windows.Forms.Form.SetVisibleCore(Boolean value) 
at System.Windows.Forms.Control.set_Visible(Boolean value) 
at System.Windows.Forms.Design.DesignerFrame.Initialize(Control view) 
at System.Windows.Forms.Design.DocumentDesigner.Initialize(IComponent component) 
at System.Windows.Forms.Design.FormDocumentDesigner.Initialize(IComponent component) 
at System.ComponentModel.Design.DesignerHost.AddToContainerPostProcess(IComponent component, String name, IContainer containerToAddTo) 
at System.ComponentModel.Design.DesignerHost.Add(IComponent component, String name) 
at System.ComponentModel.Design.DesignerHost.System.ComponentModel.Design.IDesignerHost.CreateComponent(Type componentType, String name) 
at System.ComponentModel.Design.Serialization.DesignerSerializationManager.CreateInstance(Type type, ICollection arguments, String name, Boolean addToContainer) 
at System.ComponentModel.Design.Serialization.DesignerSerializationManager.System.ComponentModel.Design.Serialization.IDesignerSerializationManager.CreateInstance(Type type, ICollection arguments, String name, Boolean addToContainer) 
at System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager manager, CodeTypeDeclaration declaration) 
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager) 
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager) 
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.DeferredLoadHandler.Microsoft.VisualStudio.TextManager.Interop.IVsTextBufferDataEvents.OnLoadCompleted(Int32 fReload) 

उत्तर

8

आप स्पष्ट रूप से स्टैक ट्रेस से देख सकते हैं कि आपके आधार रूप का लोड इवेंट हैंडलर चल रहा है और अपवाद फेंक रहा है। यह सामान्य है, मूल रूप में घटनाएं जैसे लोड और पेंट डिजाइन समय पर भी चलती हैं। यह WYSIWYG डिजाइनर दृश्य प्रदान करता है। हालांकि यह कोड खराब हो जाता है यदि वह कोड केवल रनटाइम पर ठीक से काम कर सकता है।

नियंत्रण। डिज़ाइनमोड प्रॉपर्टी का मतलब यह था कि कक्षा में कोड डिज़ाइन समय पर चल रहा है या नहीं। दुर्भाग्यवश यह सीएफ में उपलब्ध नहीं है, इसलिए एक अलग दृष्टिकोण की आवश्यकता है। जादू की घटना इस तरह दिखती है:

private void frmBase_Load(object sender, EventArgs e) { 
     if (this.Site == null || !this.Site.DesignMode) { 
      // Not in design mode, okay to do dangerous stuff... 
      this.UpdateOnline(); 
     } 
    } 
+1

सुपर बिग वर्क बहुत अच्छी तरह से, एक चार्म की तरह! –