2012-10-12 208 views
13

Soy un principiante y estoy haciendo un ejercicio siguiendo un libro. A continuación está mi código y tengo estoFalta el modificador parcial en la declaración ... existe otra declaración parcial de este tipo ". Soy un principiante y simplemente sigo el libro

"Missing partial modifier on declaration of type 'Windowsform.Form1'; another partial declaration of this type exists"

¿Qué debo hacer Mi código es el siguiente:.?

using System; 
using System.Windows.Forms; 

namespace Windowsform 
{ 
    public class Form1 : Form 
    { 
     private TextBox txtEnter; 
     private Label lblDisplay; 
     private Button btnOk; 

     public Form1() 

     { 
      this.txtEnter = new TextBox(); 
      this.lblDisplay = new Label(); 
      this.btnOk = new Button(); 
      this.Text = "My Hellowin app!"; 


      //txtEnter 
      this.txtEnter.Location = new System.Drawing.Point(16, 32); 
      this.txtEnter.Size = new System.Drawing.Size(264, 20); 

      //lblDisplay 
      this.lblDisplay.Location = new System.Drawing.Point(16, 72); 
      this.lblDisplay.Size = new System.Drawing.Size(264, 128); 

      //btnOK 
      this.btnOk.Location = new System.Drawing.Point(88, 224); 
      this.btnOk.Text = "OK"; 
      this.btnOk.Click += 
       new System.EventHandler(this.btnOK_Click); 

      //MyForm 
      this.Controls.AddRange(new Control[] { 
          this.txtEnter, this.lblDisplay, this.btnOk}); 

     } 

     static void Main() 
     { 
      Application.Run(new Form1()); 
     } 

     private void btnOK_Click(object sender, System.EventArgs e) 
     { 
      lblDisplay.Text = txtEnter.Text + "\n" + lblDisplay.Text; 
     } 
    } 
} 

Respuesta

20

En otro lugar que declaró una clase con el mismo nombre (Form1) y allí es dic lared con el modificador partial.

Si estás dividiendo la clase en dos archivos diferentes (por ejemplo, este archivo de diseño de interfaz de usuario y otro archivo para la lógica) entonces simplemente añadir el modificador partial a la declaración:

public partial class Form1 
{ 
} 
+1

@ user1742237 Supongo que cambiaste la clase de programa generada por defecto para incluir la declaración Form1 pero generalmente la plantilla para una aplicación WinForms incluye una clase Form1 generada con un vacío Formar. Simplemente elimínelo. –

+1

Tuve que desplazarme hasta aquí para encontrar una respuesta directa, orientada a códigos. En StackOverflow? ... – mmcrae

5

cuando se crea una nueva forma, en realidad se crea en dos lugares separados. un lugar donde se declara la clase es donde se implementan todas las tuberías y el archivo que pegó aquí para escribir toda la funcionalidad. para hacer esto posible, C# tiene una característica de clase parcial, si en algún lugar del ensamblaje se define una clase con un modificador parcial, entonces uno puede definir múltiples declaraciones de la clase, siempre que tenga ese modificador.

more on that in msdn

0

puedo estar totalmente equivocado acerca de esto, pero me conseguir este mismo error (y más) con MVC3 y EF4. Después de golpear mi cabeza en el escritorio por un día o así, finalmente decidí actualizarme a MVC4 y simplemente superar esa curva de aprendizaje si el MVC3 no iba a cooperar. Lo curioso es que todos mis errores desaparecieron.

Antes de actualizar, debo haber hecho 100 búsquedas tratando de encontrar mis declaraciones duplicadas.

Parece que MVC4 y EF4 juegan mejor juntos.

1

Por si acaso alguien se tropieza con esto como yo ... He estado cambiando de Visual Studio 2013 para Web y Visual Studio 2015 RC para jugar con mis soluciones de MVC.

Si intentas abrir una solución MVC4 en 2015 RC, hace algo de automatización que puede provocar este error la próxima vez que abras la misma solución en 2013 para la Web.

Terminé volviendo a una revisión anterior de SVN y solo usando 2013 para Web y mi código está bien construido como lo había hecho durante años. Sé que esta no es la solución adecuada, pero esto es lo que provocó que esto apareciera de la nada en mi caso.

0

TL; DR: causada por vestigios de clases que fueron renombradas por VS2013 pero que VS2013 no cambió de nombre apropiadamente en todas partes, dejando instancias del antiguo nombre colgando en lugares no revelados.

DETALLE: Tuve exactamente el mismo error en VS2013, en mi caso inicialmente agregué una nueva clase "Empleado" pero luego me di cuenta de que debería haber sido AddEmployee, así que hice clic derecho y cambié el nombre y 'apareció' para cámbialo en todos los lugares correctos.
Un tiempo después intenté agregar una clase Employee y luego obtuve el error.Después de visitar aquí y no encontrar una solución, he buscado 'solución completa' para otros casos de los empleados y que convirtió un par de falla desde el momento en que había cambiado de nombre previamente Empleado a AddEmployee:

AddEmployee.aspx.cs: public partial class Employee : System.Web.UI.Page 
AddEmployee.aspx.designer.cs: public partial class Employee { 

Actualizado a esos dos a AddEmployee y el error desapareció y se compiló y ejecutó como debería ...

Cuestiones relacionadas