2012-10-12 15 views
13

Ich bin ein Anfänger und mache eine Übung nach einem Buch. Unten ist mein Code und ich habe dieseFehlender partieller Modifikator auf Deklaration ... Es gibt eine weitere partielle Deklaration dieses Typs. "Ich bin ein Anfänger und folge einfach dem Buch

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

Was soll ich tun Mein Code ist wie folgt:.?

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; 
     } 
    } 
} 

Antwort

20

An einer anderen Stelle Sie eine Klasse mit demselben Namen deklariert (Form1) und dort sind es dez mit dem Modifizierer partial.

Wenn Sie Ihre Klasse in zwei verschiedenen Dateien (zum Beispiel hat diese Datei auf UI-Layout und eine andere Datei für Logik) sind Aufspalten dann fügen Sie einfach den partial Modifikator auf die Erklärung:

public partial class Form1 
{ 
} 
+1

@ user1742237 Ich vermute, Sie haben die standardmäßig generierte Program-Klasse geändert, um die Form1-Deklaration aufzunehmen, aber normalerweise enthält die Vorlage für eine WinForms-Anwendung eine generierte Form1-Klasse mit einem leeren Bilden. Einfach löschen. –

+1

Ich musste so weit scrollen, um eine einfache, Code-orientierte Antwort zu finden? Auf StackOverflow? ... – mmcrae

5

Wenn Sie erstellen neue Form, es ist tatsächlich an zwei verschiedenen Orten erstellt. Ein Ort, an dem die Klasse deklariert wird, ist der Ort, an dem die gesamte Installation implementiert wird, und die Datei, die Sie hier eingefügt haben, um alle Funktionen zu schreiben. Um dies zu ermöglichen, hat C# ein partielles Klassenmerkmal, wenn an einer Stelle der Assembly eine Klasse mit einem partiellen Modifikator definiert ist, dann kann man mehrere Deklarationen der Klasse definieren, solange sie diesen Modifikator hat.

more on that in msdn

0

kann ich über diese völlig falsch sein, aber ich war diese gleichen Fehler (und mehr) mit MVC3 und EF4. Nachdem ich für einen Tag oder so den Kopf auf den Schreibtisch geschlagen hatte, entschied ich mich schließlich für ein Upgrade auf MVC4 und ertrug gerade diese Lernkurve, wenn MVC3 nicht kooperieren würde. Das Lustige ist, dass alle meine Fehler weg sind.

Vor dem Upgrade, muss ich 100 sucht getan haben versucht, meine doppelte Erklärungen zu finden.

Scheint, MVC4 und EF4 spielen mehr nett zusammen.

1

Nur falls jemand in diesen wie ich stolpert ... Ich habe hin und her zwischen Visual Studio 2013 für Web und Visual Studio 2015 RC worden Schale mit meinen MVC-Lösungen zu spielen.

Wenn Sie versuchen, eine MVC4 Lösung im Jahr 2015 RC zu öffnen es einige Automagic tut, die diese Fehler für Web nächstes Mal öffnen, die gleiche Lösung im Jahr 2013 kommen verursachen können.

Ich landete auf eine frühere SVN-Revision Rollback und nur mit 2013 für Web und meinen Code gebaut, genau wie es seit Jahren hatte. Ich weiß, dass das nicht die richtige Lösung ist, aber das ist es, was dazu führte, dass es in meinem Fall aus dem Nichts auftauchte.

0

TL; DR: verursacht durch Überreste von Klassen, die von VS2013 umbenannt wurden, aber VS2013 nicht überall richtig umbenannt wurde, wobei Instanzen des alten Namens an unbekannten Orten zurückblieben.

DETAIL: Ich hatte genau den gleichen Fehler in VS2013, in meinem Fall habe ich zunächst eine neue Klasse "Employee" hinzugefügt, aber dann erkannte, dass es AddEmployee sein sollte, also habe ich mit der rechten Maustaste und änderte den Namen und es erschien "zu" ändere es an den richtigen Stellen.
Eine ganze Weile später versuchte ich, eine Mitarbeiterklasse hinzuzufügen und bekam dann den Fehler.Nach dem Besuch hier und nicht ein Update zu finden, suchte ich nach anderen Instanzen von Mitarbeiter ‚Gesamtlösung‘ und das stellte sich ein paar nicht aus, wenn ich vorher Mitarbeiter zu AddEmployee umbenannt hatte bis:

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

die beiden zu AddEmployee Aktualisiert und der Fehler ging weg und kompiliert und lief wie es sollte.