Vra

Ek het 'n NET 2.0 vensters vorm app, wat swaar gebruik van die ListView beheer maak.

Ek het subclassed die ListView klas in 'n sjablonen SortableListView<T> klas, so dit 'n bietjie slimmer oor hoe dit vertoon dinge kan wees, en self te sorteer.

Ongelukkig hierdie lyk na die Visual Studio Vorms Designer breek, in beide VS2005 en 2008.

Die program stel en loop goed, maar wanneer ek probeer kyk na die besit van vorm in die ontwerper, kry ek hierdie foute:

  • Kan tipe 'MyApp.Controls.SortableListView' vind nie. Maak asseblief seker dat die vergadering wat hierdie tipe bevat word gekla. As hierdie tipe is 'n deel van jou ontwikkeling projek, maak seker dat die projek suksesvol gebou.

Daar is geen stapelspoor of foute line inligting beskikbaar vir hierdie fout

  • Die veranderlike 'listViewImages' is óf swart of is nooit opgedra.

Op MyApp.Main.Designer.cs Line: XYZ kolom: 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) 

Die reël van die kode in die vraag is waar dit eintlik is bygevoeg om die vorm, en is

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

listViewImages verklaar as

private MyApp.Controls.SortableListView<Image> listViewImages;

en word aangehaal in die InitializeComponent metode soos volg:

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

Soos vroeër genoem, die program saamstel en loop perfek, en ek het probeer om die verskuiwing van die SortableListView klas uit 'n aparte vergadering so dit afsonderlik saamgestel kan word, maar dit maak geen verskil.

Ek het geen idee waar om te gaan van hier af. Enige hulp sal waardeer word!

Was dit nuttig?

Oplossing 3

  

wanneer jy die script lys gevoeg, het jy dit toe te voeg tot die toolbox en dan voeg dit by die vorm?

Nee, ek het net geredigeer Main.Designer.cs en verander dit van System.Windows.Forms.ListView om MyApp.Controls.SortableListView<Image>

vermoed dit kon gewees het as gevolg van die generiese het my gelei tot 'n oplossing eintlik vind.

Vir elke klas wat ek nodig het om 'n SortableListView vir maak, ek omskryf 'n "stomp klas 'soos hierdie

class ImagesListView : SortableListView<Image> { }

Toe het die Main.Designer.cs lêer verwys na hierdie stomp klasse in plaas van die SortableListView.

Dit werk nou, hoera!

Gelukkig is ek in staat om dit te doen, want al my tipes is bekend aan die voorkant, en ek is maar net die gebruik van die SortableListView as 'n metode van die vermindering van dubbele kode.

Ander wenke

Dit met my gebeur het as gevolg van x86 / x64 argitektuur.

Sedert Visual Studio (die ontwikkeling instrument self) het geen x64 weergawe, dit is nie moontlik na x64 beheer laai in GUI ontwerper.

Die beste benadering vir hierdie dalk tuning GUI onder x86 wees, en stel dit vir x64 wanneer dit nodig is.

Ek het 'n probleem soos hierdie in die verlede gehad het (tho nie dieselfde) waar my beheer was in 'n ander naamruimte my vorm selfs tho dit was in dieselfde projek. Om dit op te los Ek moes 'n voeg

using My.Other.Namespace;

om die top van die ontwerper gegenereerde kode lêer. Die irriterende ding is dit aangehou om weg geblaas toe die ontwerper die bladsy herskep.

Ek het hierdie probleem ook met betrekking tot die samesmelting van massiewe SVN veranderinge (met konflikte) in die * .Designer.cs lêer. Die oplossing was om net oop te maak die design view grafies, wysig 'n beheer (skuif dit na links dan regs) en weer stoor die ontwerp. Die * .Designer.cs lêer mettertyd verander, en die waarskuwing gegaan op die volgende samestelling.

Om duidelik te wees, moet jy los al die kode saamsmelt probleme eerste. Dit is net 'n werk om te dwing VS om hulle te herlaai.

Die vergadering wat bevat MyApp.Controls.SortableListView is nie in die GAC geïnstalleer deur enige kans is dit?

wanneer jy die script lys gevoeg, het jy dit toe te voeg tot die toolbox en dan voeg dit by die vorm?

Miskien het jy vergeet om by te voeg dat:

    /// <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
        // ...
    }

Ek iets soortgelyks het - 'n gebruiker beheer het verwys na 'n afgeleë serice (wat ek nie kan waarborg beskikbaar is by die ontwerp tyd).

Hierdie pos op MSDN voorgestel dat ek voeg

if (this.DesignMode) return;

om die las funksie van die beheer, of in my geval tot op die punt voor die WCF kliënt is geïnisialiseer. Wat het die knoop deurgehaak.

So

private readonly Client _client = new Client();

raak

private Client _client;

public new void Load()
{
    if(DesignMode) return;
    _client = new Client();
}

Ek het dieselfde probleem. In my geval was dit saak as gevolg van inisialisering hulpbron. Ek het die volgende kode uit InitializeComponent metode om ctor (Na 'n beroep InitializeComponent). Daarna was hierdie kwessie opgelos:

this->resources = (gcnew System::ComponentModel::ComponentResourceManager(XXX::typeid));

Ek het dieselfde probleem gehad. Na die verwydering van 'n paar van my eie kontrole van die * .Designer.cs-Liasseer die probleem opgelos is. Na terug te gaan na die oorspronklike kode steeds die probleem opgelos is. dit lyk so 'n probleem met die Visual Sudio kas wees. Op die oomblik kan ek nie hierdie probleem te reproduseer.

As jy die probleem probeer om die gids leë studentenkamer

C: \ Users \ Your Name \ AppData \ Local \ Microsoft \ Visual Studio \ weergawe \ Designer \ ShadowCache

Het dit werk?

In my geval was die probleem naam van my projek die gids se! Hoekom ek dink hierdie: Ek gebruik SVN en in die 'stam \ SGIMovel' werk perfek. Maar in 'n tak gids met die naam as 'OS # 125 \ SGIMovel "Ek kan die ontwerper nie oop vir 'n vorm wat 'n persoonlike beheer gebruik en werk in die stam gids.

kry net buite die # en werk lekker.

Dankie vir niks.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top