„Nelze najít typ“ chyba při nahrávání formuláře ve Windows Forms Designer

hlasů
27

Mám .NET 2.0 Windows Forms aplikaci, která dělá těžké použití ListViewovládacího prvku.

Jsem podtřídy na ListViewtřídu podle šablony do SortableListView<T>třídy, takže to může být trochu chytřejší o tom, jak se zobrazí věci, a vyřeší samo.

Bohužel to vypadá, že rozbít Designer Visual Studio formuláře, jak VS2005 a 2008.

Program je sestaven a běží v pohodě, ale když se snažím zobrazení formuláře vlastnící v Návrháři, mám tyto chyby:

  • Nelze najít typ ‚MyApp.Controls.SortableListView‘. Ujistěte se, že sestava, která obsahuje tento typ je odkazováno. Pokud tento typ je součástí vývojového projektu, ujistěte se, že tento projekt byl úspěšně postaven.

Neexistuje žádný stack trace nebo chyba linka k dispozici pro tuto chybu

  • Proměnná listViewImages 'je buď nedeklarovaný nebo nikdy nebyl přidělen.

Na MyApp.Main.Designer.cs linka: XYZ Kolona: 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) 

Řádek kódu v otázku, kde je skutečně přidán do formuláře, a je

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

listViewImages je deklarován jako

private MyApp.Controls.SortableListView<Image> listViewImages;

a je vytvořena ve InitializeComponentzpůsobu, jak je následovně:

this.listViewImages = new MyApp.Controls.SortableListView<Image>();

Jak již bylo zmíněno, program sestavuje a běží perfektně, a já jsem se snažil přesunu SortableListViewtřídu ven do samostatného sestavě, takže to může být shromažďovány odděleně, ale to nehraje žádnou roli.

Nemám ponětí, kam jít odsud. Jakýkoliv pomoci chtěl bych být ocenil!

Položena 13/08/2008 v 00:17
zdroj uživatelem
V jiných jazycích...                            


11 odpovědí

hlasů
15

Stalo se mi, protože x86 / x64 architektuře.

Vzhledem k tomu, Visual Studio (vývojový nástroj sám o sobě) nemá verze x 64, to není možné načíst kontrolu x64 do GUI návrháře.

Nejlepším řešením pro toto by mohlo být tuning GUI pod x86 a kompilovat jej x64-li to nutné.

Odpovězeno 18/11/2015 v 03:57
zdroj uživatelem

hlasů
6

když jste přidali ListView, jsi ho přidat do panelu nástrojů a potom přidat do formuláře?

Ne, jen jsem upravil Main.Designer.csa změnil ho od System.Windows.Forms.ListViewdoMyApp.Controls.SortableListView<Image>

Podezření, že by mohlo být vzhledem k generik vedl mě skutečně najít řešení.

Pro každou třídu, které musím udělat SortableListView pro definovaný jsem ‚pahýl třídu‘ takhle

class ImagesListView : SortableListView<Image> { }

Pak dělal Main.Designer.cssoubor odkazují na tyto čepech tříd namísto SortableListView.

Nyní funguje, hurá!

Naštěstí jsem schopen to udělat, protože všechny mé typy jsou známy dopředu, a já jsem s použitím pouze SortableListViewjako metoda snížení duplicitního kódu.

Odpovězeno 13/08/2008 v 02:23
zdroj uživatelem

hlasů
6

Měl jsem problém, jako je tento (tho není stejná) v minulosti, kde moje kontrola byla v jiném oboru názvů mé formě i tho to bylo ve stejném projektu. Chcete-li ji opravit musel jsem přidat

using My.Other.Namespace;

v horní části návrháře generované souboru kódu. Otravné věc, to bylo stále dostat foukané pryč, když projektant regenerovat stránku.

Odpovězeno 13/08/2008 v 00:33
zdroj uživatelem

hlasů
5

Měl jsem tento problém také v souvislosti s slučování masivní změny SVN (s konflikty) v * .Designer.cs souboru. Řešením bylo právě otevírá výhled návrhu graficky upravovat ovládací prvek (přesunout doleva a doprava) a uložte design. Mezi * .Designer.cs soubor zázračně změnil, a varování odešel na další kompilace.

Aby bylo jasno, je třeba vyřešit všechny problémy kód sloučení dříve. To je jen vyřešit vynutit VS je nabít.

Odpovězeno 31/08/2012 v 00:15
zdroj uživatelem

hlasů
2

Možná jste zapomněli dodat, že:

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

    /// <summary>
    /// Release all resources used.
    /// </summary>
    /// <param name="disposing">true if managed resources should be removed otherwise; false.</param>
    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
        // ...
    }
Odpovězeno 31/07/2012 v 22:02
zdroj uživatelem

hlasů
2

když jste přidali ListView, jsi ho přidat do panelu nástrojů a potom přidat do formuláře?

Odpovězeno 13/08/2008 v 02:07
zdroj uživatelem

hlasů
2

Sestava, která obsahuje MyApp.Controls.SortableListView je v GAC není nainstalován náhodou je to?

Odpovězeno 13/08/2008 v 01:22
zdroj uživatelem

hlasů
1

Měl jsem stejný problém. V mém případě tato otázka byla způsobena zdrojů inicializaci. Přestěhovala jsem následující kód z InitializeComponentmetody ctor (po zavolání InitializeComponent). Poté, co že tento problém byl vyřešen:

this->resources = (gcnew System::ComponentModel::ComponentResourceManager(XXX::typeid));
Odpovězeno 19/11/2013 v 12:48
zdroj uživatelem

hlasů
1

Měl jsem něco podobného - kontrola byl uživatel s odkazem na vzdáleném serice (což nemohu zaručit, že k dispozici v době návrhu).

Tento příspěvek na webu MSDN navrhl, že přidám

if (this.DesignMode) return;

funkci Load kontroly, nebo v mém případě na místě dříve, než klient WCF byl inicializován. Že došlo ke stejnému efektu.

Tak

private readonly Client _client = new Client();

stává

private Client _client;

public new void Load()
{
    if(DesignMode) return;
    _client = new Client();
}
Odpovězeno 18/08/2009 v 11:52
zdroj uživatelem

hlasů
0

Měl jsem stejný problém. Po odstranění některé z mých vlastních kontrol z * .Designer.cs-File problém byl vyřešen. Po návratu na původní kód problém stále byl vyřešen. Takže se zdá být problém s Visual mezipaměti Sudio. V tuto chvíli nemohu tento problém reprodukovat.

Pokud máte problém se snaží prázdný složku

C: \ Users \ yourname \ AppData \ Local \ Microsoft \ VisualStudio \ VERZE \ Designer \ ShadowCache

Fungovalo to?

Odpovězeno 03/02/2017 v 08:41
zdroj uživatelem

hlasů
-2

V mém případě byl problém název složky a mého projektu! Proto myslím, že to: Používám SVN a do ‚kufru \ SGIMovel‘ funguje perfektně. Ale ve složce větve pojmenované jako ‚OS # 125 \ SGIMovel‘ Nemohu otevřít návrháře pro formulář, který používá vlastní ovládací prvek a pracuje ve složce kufru.

Jen vystoupit # a pracuje hezky.

Díky za nic.

Odpovězeno 17/10/2013 v 14:59
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more