विंडोज फॉर्म डिज़ाइनर में एक फॉर्म लोड करने में त्रुटि "प्रकार नहीं मिला"

मेरे पास एक .NET 2.0 विंडोज़ फॉर्म ऐप है, जो ListView नियंत्रण का भारी उपयोग करता है।

I've subclassed the ListView class into a templated SortableListView class, so it can be a bit smarter about how it displays things, and sort itself.

दुर्भाग्य से यह वीएस2005 और 2008 दोनों में विजुअल स्टूडियो फॉर्म डिज़ाइनर को तोड़ने लगता है।

कार्यक्रम संकलित करता है और ठीक चलता है, लेकिन जब मैं डिजाइनर में स्वामित्व का फॉर्म देखने की कोशिश करता हूं, तो मुझे ये त्रुटियां मिलती हैं:

  • 'MyApp.Controls.SortableListView' प्रकार नहीं मिला। कृपया सुनिश्चित करें कि इस प्रकार के असेंबली का संदर्भ दिया गया है। यदि यह प्रकार आपके विकास प्रोजेक्ट का हिस्सा है, तो सुनिश्चित करें कि परियोजना सफलतापूर्वक बनाई गई है।

इस त्रुटि के लिए कोई स्टैक ट्रेस या त्रुटि रेखा जानकारी उपलब्ध नहीं है

  • वेरिएबल 'listViewImages' या तो अविकसित है या कभी असाइन नहीं किया गया था।

MyApp.Main.Designer.cs लाइन पर: XYZ कॉलम: 1

Call stack:
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.Error(IDesignerSerializationManager manager, String exceptionText, String helpLink)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager, CodeStatement statement) 

प्रश्न में कोड की रेखा वह जगह है जहां इसे वास्तव में रूप में जोड़ा जाता है, और है

this.imagesTab.Controls.Add( this.listViewImages );

listViewImages के रूप में घोषित किया गया है

private MyApp.Controls.SortableListView listViewImages;

और निम्नानुसार InitializeComponent विधि में तत्काल है:

this.listViewImages = new MyApp.Controls.SortableListView();

जैसा कि पहले उल्लेख किया गया है, कार्यक्रम पूरी तरह से संकलित और चलाता है, और मैंने एक अलग विधानसभा में SortableListView कक्षा को स्थानांतरित करने का प्रयास किया है, इसलिए इसे अलग से संकलित किया जा सकता है, लेकिन इससे कोई फर्क नहीं पड़ता।

मुझे नहीं पता कि यहां से कहाँ जाना है। किसी भी सहायता की सराहना की जाएगी!

0
ro fr bn

11 उत्तर

जब आपने सूचीदृश्य जोड़ा, तो क्या आपने इसे टूलबॉक्स में जोड़ा और फिर इसे फ़ॉर्म में जोड़ें?

No, I just edited Main.Designer.cs and changed it from System.Windows.Forms.ListView to MyApp.Controls.SortableListView

यह संदेह हो सकता है कि जेनेरिकों ने मुझे वास्तव में समाधान खोजने का नेतृत्व किया है।

प्रत्येक वर्ग के लिए जिसे मुझे SortableListView बनाने की आवश्यकता है, मैंने इस तरह 'स्टब क्लास' परिभाषित किया है

class ImagesListView : SortableListView { }

फिर Main.Designer.cs फ़ाइल को SortableListView के बजाय इन स्टब कक्षाओं को संदर्भित किया गया है।

अब यह काम करता है, हुरे!

शुक्र है कि मैं ऐसा करने में सक्षम हूं क्योंकि मेरे सभी प्रकार सामने आ गए हैं, और मैं डुप्लिकेट कोड को कम करने की विधि के रूप में केवल SortableListView का उपयोग कर रहा हूं।

0
जोड़ा
हाय ओरियन ... जैसा कि आपने उपरोक्त उल्लेख किया है, वही समस्या है ... मैं इस वर्ग को समझने में सक्षम नहीं था "प्रत्येक वर्ग के लिए जिसे मुझे सॉर्ट करने योग्य लिस्ट व्यू बनाने की आवश्यकता है, मैंने इस वर्ग की तरह 'स्टब क्लास' परिभाषित किया है ImageListView : SortableListView {} "इस समस्या को हल करने के लिए आपने क्या किया? क्या आप थोड़ा विस्तार से समझा सकते हैं? क्या आपने एक और नई कक्षा बनाई और फिर डिजाइनर.cs को संदर्भित किया?
जोड़ा लेखक Gowtham Ramamoorthy, स्रोत

मुझे इस तरह की समस्या थी (अतीत में वही नहीं) जहां मेरा नियंत्रण मेरे रूप में एक अलग नामस्थान में था, भले ही यह एक ही प्रोजेक्ट में था। इसे ठीक करने के लिए मुझे एक जोड़ना पड़ा

using My.Other.Namespace;

डिजाइनर जेनरेट कोड कोड के शीर्ष पर। डिजाइनर ने पृष्ठ को फिर से उत्पन्न करते समय परेशान चीज को उड़ा दिया था।

0
जोड़ा

असेंबली जिसमें MyApp.Controls.SortableListView शामिल है, किसी भी मौके से जीएसी में स्थापित नहीं है?

0
जोड़ा

जब आपने सूचीदृश्य जोड़ा, तो क्या आपने इसे टूलबॉक्स में जोड़ा और फिर इसे फ़ॉर्म में जोड़ दिया?

0
जोड़ा

मेरी भी यही समस्या थी। * Designer.cs-File के अपने कुछ नियंत्रणों को हटाने के बाद समस्या हल हो गई थी। मूल कोड पर वापस जाने के बाद समस्या अभी भी हल हो गई थी। तो यह दृश्य सुडियो कैश के साथ एक समस्या प्रतीत होता है। फिलहाल मैं इस समस्या को पुन: उत्पन्न नहीं कर सकता।

यदि आपको समस्या है तो फ़ोल्डर को खाली करने का प्रयास करें

C: \ Users \ yourname \ AppData \ Local \ Microsoft \ VisualStudio \ संस्करण \ डिजाइनर \ ShadowCache

काम किया?

0
जोड़ा

मुझे यह समस्या भी थी, * * डिज़ाइनर.cs फ़ाइल में बड़े पैमाने पर एसवीएन परिवर्तन (विवादों के साथ) विलय करने से संबंधित। समाधान केवल ग्राफिक रूप से डिज़ाइन दृश्य को खोलना था, एक नियंत्रण संपादित करें (इसे बाएं से दाएं स्थान पर ले जाएं) और डिज़ाइन को पुन: सहेजें। *। डिज़ाइनर सीएस फ़ाइल जादुई रूप से बदल गई, और चेतावनी अगले संकलन पर चली गई।

स्पष्ट होने के लिए, आपको पहले कोड विलय समस्याओं को ठीक करने की आवश्यकता है। वीएस को फिर से लोड करने के लिए मजबूर करने के लिए यह सिर्फ एक काम है।

0
जोड़ा
Dirk - आप सोच सकते हैं कि यह सच नहीं है, लेकिन यह मेरे साथ हुआ है। मैंने इसे ठीक करने की कोशिश करने के लिए घंटों बिताए। काश मैं अभी भी Designer.cs फ़ाइल के संस्करणों के पहले और बाद में था, लेकिन मैं नहीं करता। विजुअल स्टूडियो में स्पष्ट रूप से एक बग है जो कुछ आंतरिक मेटा डेटा को ठीक से रीफ्रेश नहीं करता है, और इसे ठीक करने के लिए एकमात्र तरीका है जिसे ग्राफ़िकल व्यू को सहेजकर ताज़ा करना है।
जोड़ा लेखक Mark Lakata, स्रोत
अगर आपको लगता है कि यह सच नहीं है तो कृपया इसे मत छोड़ो। विजुअल स्टूडियो में डिज़ाइन फाइलों को कैश करने के तरीके में एक बग है और यह एक काम है। बेशक, आपको पहले त्रुटियों को ठीक करने की आवश्यकता है और उसके बाद दृश्य स्टूडियो को प्राप्त करने के लिए यह कार्य आसपास करें।
जोड़ा लेखक Mark Lakata, स्रोत
मैं दृढ़ता से असहमत हूं; यह मेरे लिए एक आकर्षण की तरह काम किया (फ्रेमवर्क 4.0 का उपयोग कर)। शुरुआत में डिजाइनर चेतावनियों को प्रदर्शित करने के लिए कुछ सेकंड के लिए shoed, तो फार्म ठीक से खींचा गया था। मैंने एक बटन जोड़ा, बटन हटा दिया, और समाधान का पुनर्निर्माण किया; चेतावनी सभी गायब हो गए।
जोड़ा लेखक Pieter Geerkens, स्रोत
यह बिल्कुल सही नहीं है। यदि आपको इनमें से कोई भी चेतावनी मिलती है, तो ग्राफ़िकल दृश्य टूटा हुआ है। कुछ भी नहीं दिखाया जाएगा और इसलिए आप इसे "जादूगर रूप से ठीक करने के लिए कुछ स्थानांतरित नहीं कर सकते"। ओप की शिकायत होने के कारण त्रुटियों की एक सूची है और कोई गुई नहीं है।
जोड़ा लेखक Dirk Bester, स्रोत

मेरे पास कुछ समान था - एक उपयोगकर्ता नियंत्रण रिमोट सेरिसे का जिक्र कर रहा था (जिसे मैं डिजाइन समय पर उपलब्ध होने की गारंटी नहीं दे सका)।

This post on MSDN suggested that I add

if (this.DesignMode) return;

नियंत्रण के लोड फ़ंक्शन पर, या डब्ल्यूसीएफ क्लाइंट शुरू होने से पहले मेरे मामले में बिंदु पर। वह चाल है।

इसलिए

private readonly Client _client = new Client();

हो जाता है

private Client _client;

public new void Load()
{
    if(DesignMode) return;
    _client = new Client();
}
0
जोड़ा

X86/x64 आर्किटेक्चर की वजह से यह मेरे साथ हुआ।

चूंकि विजुअल स्टूडियो (विकास उपकरण स्वयं) में कोई x64 संस्करण नहीं है, इसलिए जीआईआई डिजाइनर में x64 नियंत्रण लोड करना संभव नहीं है।

इसके लिए सबसे अच्छा तरीका x86 के तहत जीयूआई ट्यूनिंग हो सकता है, और आवश्यक होने पर इसे x64 के लिए संकलित कर सकता है।

0
जोड़ा
निश्चित रूप से, मेरे लक्ष्य सीपीयू को x86 में बदलने के लिए यह समस्या मेरे लिए तय की गई है। धन्यवाद!
जोड़ा लेखक johnnyRose, स्रोत
माइक्रोसॉफ्ट के हिस्से पर यह पूर्ण बीएस है।
जोड़ा लेखक Dr. Cogent, स्रोत
मैं वास्तव में विजुअल स्टूडियो का एक x64 संस्करण चाहता हूं।
जोड़ा लेखक user2033412, स्रोत

शायद आप इसे जोड़ना भूल गए हैं:

    /// 
/// Required designer variable. ///
 
    private System.ComponentModel.IContainer components = null;

    /// 
/// Release all resources used. ///
 
    /// 
true if managed resources should be removed otherwise; false.
    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing);
    }

    private void InitializeComponent()
    {
       //...
        this.components = new System.ComponentModel.Container();//Not necessarily, if You do not use
       //...
    }
0
जोड़ा

मेरे मामले में समस्या मेरे प्रोजेक्ट का फ़ोल्डर का नाम था! मुझे ऐसा क्यों लगता है: मैं एसवीएन का उपयोग करता हूं और 'ट्रंक \ SGIMovel' में पूरी तरह से काम करता है। लेकिन 'ओएस # 125 \ एसजीआईमोवेल' नामक शाखा फ़ोल्डर में मैं एक ऐसे फॉर्म के लिए डिज़ाइनर नहीं खोल सकता जो कस्टम नियंत्रण का उपयोग करता है और ट्रंक फ़ोल्डर में काम करता है।

बस # बंद हो जाओ और अच्छा काम करता है।

बिना किसी कारण धन्यवाद।

0
जोड़ा

मेरी भी यही समस्या थी। मेरे मामले में यह समस्या संसाधन प्रारंभिकरण के कारण थी। मैंने निम्नलिखित कोड को InitializeComponent विधि से ctor में ले जाया है (कॉल करने के बाद InitializeComponent )। उसके बाद इस मुद्दे को हल किया गया था:

this->resources = (gcnew System::ComponentModel::ComponentResourceManager(XXX::typeid));
0
जोड़ा