2010-02-11 13 views
7

Quiero crear un nuevo formulario que es casi un duplicado de un diálogo que ya tengo en mi proyecto. No quiero perder tiempo para recrear la mayor parte de la forma cero si no es necesario.C# copiar, pegar un formulario en un proyecto de Visual Studio

Copio, luego lo pego en mi proyecto y lo cambio de nombre de Copy of Original .cs a NewItem.cs.

Cuando reconstruyo mi solución, obtengo un error .

The item "obj\Debug\Control.Forms.NewUser.resources" was specified more 
than once in the "Resources" parameter. 
Duplicate items are not supported by the "Resources" parameter. 

¿Qué estoy haciendo mal? ¿Hay alguna manera de solucionar el problema?

+0

¿Resolvió esto? –

+0

todavía no, todavía tengo el problema. – Kevin

Respuesta

3

es probable que haya algún recurso local almacenado en un archivo llamado Original.resx

Cuando copió el cuadro de diálogo que copiar este archivo, pero no cambie su nombre (esto no debería ocurrir sin embargo). Vea si tiene un archivo .resx debajo de su Copy Of Original.cs en el Explorador de soluciones. Si es así cambie el nombre de esto también.

Puede valer la pena realizar un Limpiar (haga clic derecho en el Proyecto o la Solución) de todos modos para borrar las carpetas obj y bin, luego intente recompilar.

+0

el archivo Copy Of Original.resx refactorizó su nombre cuando cambié el nombre de Original.cs a New.cs – Kevin

+0

Tengo algunos controles que establezco la propiedad 'GenerateMembers' en falso, es por eso que creó el archivo resx para comenzar con. Dentro del archivo resx, los controles tienen un atributo 'PublicKeyToken' que es el mismo en ambos archivos. Me pregunto si ese es el problema. – Kevin

+1

Establecer GenerateMembers correctamente en falso no debe conducir la creación de un archivo .RESX. Compruebe que cada una de sus clases tenga el nombre correcto en .cs y designer.cs. Ya he visto antes que cuando hace una copia de un formulario y va al código para cambiar su nombre de clase, Visual Studio vuelve a factorizar todo el código y también cambia el nombre de la clase en el archivo form.cs original (creando así un duplicado con el nuevo nombre). –

0

Al crear la copia del formulario original, VS no cambia el espacio de nombre original (en su caso, sigue siendo "Original"). Por lo tanto, simplemente cambie este espacio de nombre duplicado (en "Copia del original") en algunas cosas únicas.

2

Pregunta anterior, pero voy a responder para los futuros usuarios de Google desde que OP afirmó que la respuesta aceptada no resolvió el problema.

El problema es que NewItem.cs todavía contiene una clase con el mismo nombre que Original.cs. Esto sucede cuando el nombre de archivo y el nombre de clase son diferentes (a diferencia de Eclipse para Java, Visual Studio lo permite en proyectos de C#). Copiar y pegar agrega el prefijo "Copia de" al nombre del archivo y la función de cambiar el nombre del archivo no es lo suficientemente inteligente como para deducir que el cambio de nombre de la clase sería apropiado en tal caso.

Para corregir el error, se debe cambiar el nombre de la clase en el elemento de proyecto duplicado. Digo ítem en lugar de archivo porque en el caso de WinForms, eso significa dos archivos: uno que el explorador de solución muestra de forma predeterminada (clic derecho -> mostrar código o F7 si el diseñador visual lo saluda) y .designer.cs. No es necesario modificar .resx AFAIK.

Cuestiones relacionadas