Pregunta

Tengo un .NET 2.0 aplicación de formularios de windows, que hace un uso intensivo de la ListView de control.

He subclases de la ListView clase en una plantilla SortableListView<T> la clase, por lo que puede ser un poco más inteligente acerca de cómo se muestra cosas, y ordenar a sí mismo.

Lamentablemente esto parece romper el Diseñador de Formularios de Visual Studio, en tanto VS2005 y 2008.

El programa se compila y se ejecuta correctamente, pero cuando intento ver el propietario del formulario en el diseñador, me da estos Errores:

  • No se pudo encontrar el tipo de 'MyApp.Controles.SortableListView'.Por favor, asegúrese de que el ensamblado que contiene este tipo de referencia.Si este tipo es una parte de su proyecto de desarrollo, asegúrese de que el proyecto ha sido construido con éxito.

No hay ninguna traza de pila o error de la línea de información disponible para este error

  • La variable 'listViewImages' es o no declarados o nunca fue asignado.

En MyApp.Principal.El diseñador.Línea cs:XYZ Columna: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) 

La línea de código en cuestión es de dónde es realmente agregado a la forma, y es

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

listViewImages está declarada como

private MyApp.Controls.SortableListView<Image> listViewImages;

y es una instancia en la InitializeComponent método de la siguiente manera:

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

Como se mencionó anteriormente, el programa se compila y se ejecuta perfectamente, y he tratado de cambiar el SortableListView clase a una nueva asamblea por lo que pueden ser compilados por separado, pero esto no hace ninguna diferencia.

No tengo idea de a dónde ir desde aquí.Cualquier ayuda se agradece!

¿Fue útil?

Solución 3

cuando usted agrega el listview, ¿agregar al cuadro de herramientas y, a continuación, agregue al formulario?

No, me acaba de editar Main.Designer.cs y cambió a partir de System.Windows.Forms.ListView a MyApp.Controls.SortableListView<Image>

Ante la sospecha de que podría haber sido debido a los genéricos que me llevó a encontrar una solución.

Para cada clase que necesito para hacer un SortableListView para, he definido un 'talón de clase' como este

class ImagesListView : SortableListView<Image> { }

A continuación, hizo la Main.Designer.cs archivo de referirse a estos punta de clases en lugar de la SortableListView.

Ahora funciona, ¡hurra!

Por suerte yo soy capaz de hacer esto porque todos mis tipos se conocen hasta el frente, y sólo estoy usando el SortableListView como un método de reducción de código duplicado.

Otros consejos

Me pasó a mí, porque de x86 / x64 arquitectura.

Desde Visual Studio (el desarrollo de la herramienta en sí misma) no tiene versión de 64 bits, no es posible cargar x64 de control en la interfaz gráfica del diseñador.

El mejor enfoque para esto podría ser la sintonía de la GUI bajo x86, y compilarlo para x64 cuando sea necesario.

He tenido un problema como este (aunque no el mismo) en el pasado donde mi control era en un espacio de nombres diferente a mi forma incluso tho fue en el mismo proyecto.Para solucionarlo he tenido que añadir un

using My.Other.Namespace;

para la parte superior del código generado por el diseñador de archivo.El molesto cosa era que seguía recibiendo flipado cuando el diseñador se ha regenerado la página.

He tenido este problema también, relativa a la fusión masiva SVN cambios (los conflictos) en el *.El diseñador.cs archivo.La solución fue simplemente abra la vista de diseño de forma gráfica, edición de un control (mover a la izquierda luego a la derecha) y vuelva a guardar el diseño.El *.El diseñador.cs archivo cambia mágicamente, y la advertencia se fue de la siguiente compilación.

Para ser claros, usted necesita para arreglar todo el código de combinación de problemas en primer lugar.Esta es sólo una obra en torno a la fuerza frente a recargarlos.

El ensamblado que contiene MyApp.Controles.SortableListView no está instalado en el GAC por casualidad es?

cuando usted agrega el listview, ¿agregar al cuadro de herramientas y, a continuación, agregue al formulario?

Tal vez se le olvidó agregar que:

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

Tuve algo similar - un control de usuario se refiere a un remoto cargo (que yo no podía garantizar que están disponibles en tiempo de diseño).

Este post en la web de MSDN me sugirió que agregar

if (this.DesignMode) return;

para la función de Carga de control, o en mi caso, hasta el punto antes de que el cliente de WCF fue inicializado.Que hizo el truco.

Así

private readonly Client _client = new Client();

se convierte en

private Client _client;

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

Yo tenía el mismo problema.En mi caso, este problema era debido a los recursos de la inicialización.He movido el siguiente código InitializeComponent método cto r(Después de llamar a InitializeComponent).Después de que este problema se resolvió:

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

He tenido el mismo problema.Después de la eliminación de algunos de mis propios controles de la *.El diseñador.cs-File se solucionó el problema.Después de volver a la original de código el problema fue resuelto.Por lo que parece ser un problema con el Visual Sudio caché.En el momento en que no puede reproducir este problema.

Si usted tiene el problema de tratar de emtpy la carpeta

C:\Users\YOURNAME\AppData\Local\Microsoft\VisualStudio\VERSION\Designer\ShadowCache

Hizo el trabajo?

En mi caso el problema era el nombre de la carpeta de mi proyecto!Por qué pienso esto:Yo uso SVN y en el 'tronco\SGIMovel' funciona a la perfección.Pero en una rama de la carpeta nombrada como 'OS#125\SGIMovel' I no se puede abrir el diseñador de un formulario que utiliza un control personalizado y trabaja en la carpeta de tronco.

Acaba de salir de la # y funciona bien.

Gracias por nada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top