2012-10-12 29 views
13

Sono un principiante e sto facendo un esercizio seguendo un libro. ho ottenuto questoModificatore parziale mancante sulla dichiarazione .. esiste un'altra dichiarazione parziale di questo tipo ". Sono un principiante e sto seguendo il libro

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

Cosa devo fare mio codice è il seguente:.?

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

risposta

20

In un altro luogo avete dichiarato una classe con lo stesso nome (Form1) e non v'è dicembre illuminare con il modificatore partial.

Se stai dividere la classe in due file diversi (ad esempio, il file per il layout dell'interfaccia utente e un altro file per la logica), quindi è sufficiente aggiungere il modificatore partial alla dichiarazione:

public partial class Form1 
{ 
} 
+1

@ user1742237 Immagino che abbiate modificato la classe Program generata automaticamente per includere la dichiarazione Form1 ma in genere il modello per un'applicazione WinForms include una classe Form1 generata con un vuoto Modulo. Semplicemente cancellalo. –

+1

Ho dovuto scorrere fino a qui per trovare una risposta diretta e orientata al codice? Su StackOverflow? ... – mmcrae

5

Quando si crea un nuova forma, in realtà è creata in due posti separati. un posto in cui la classe è dichiarata è dove vengono implementati tutti gli impianti idraulici e il file che hai incollato qui, per scrivere tutte le funzionalità. per fare in modo che ciò sia possibile, C# ha una caratteristica di classe parziale, se in qualche luogo dell'assembly una classe è definita con un modificatore parziale, allora si possono definire più dichiarazioni della classe, purché abbia quel modificatore.

more on that in msdn

0

posso essere completamente sbagliato su questo, ma mi è stato sempre lo stesso errore (e non solo) con MVC3 e EF4. Dopo aver sbattuto la testa sulla scrivania per un giorno o due, alla fine ho deciso di passare a MVC4 e ho sofferto per quella curva di apprendimento se MVC3 non avesse intenzione di collaborare. La cosa divertente è che tutti i miei errori sono andati via.

Prima di eseguire l'aggiornamento, devo aver effettuato 100 ricerche per trovare le mie dichiarazioni duplicate.

Sembra che MVC4 e EF4 giochino più bene insieme.

1

Nel caso in cui qualcuno si imbatta in questo come me ... Sto passando da Visual Studio 2013 per Web e Visual Studio 2015 RC per giocare con le mie soluzioni MVC.

Se si tenta di aprire una soluzione MVC4 nel 2015, RC esegue alcune operazioni automagiche che possono causare l'apertura di questo errore la prossima volta che apri la stessa soluzione nel 2013 per Web.

Ho terminato il rollback di una precedente revisione SVN e solo utilizzando 2013 per Web e il mio codice ha funzionato correttamente come aveva fatto per anni. So che questa non è la correzione corretta, ma questo è ciò che ha causato questo "pop-up" dal nulla nella mia istanza.

0

TL; DR: causato da tracce di classi che sono state ridenominate da VS2013 ma VS2013 non è stato correttamente rinominato ovunque, lasciando le istanze del vecchio nome in giro in luoghi non divulgati. DETTAGLIO: Ho avuto esattamente lo stesso errore in VS2013, nel mio caso inizialmente ho aggiunto una nuova classe "Dipendente" ma poi ho realizzato che avrebbe dovuto essere AddEmployee, quindi ho fatto clic con il pulsante destro del mouse e ho cambiato il nome ed è "apparso" su cambiarlo in tutti i posti giusti.
Un po 'di tempo dopo ho provato ad aggiungere una classe Employee e poi ho ricevuto l'errore.Dopo aver visitato qui e non trovare una soluzione, ho cercato 'intera soluzione' per le altre istanze di dipendenti e che alzato un paio di fallisce da quando avevo precedentemente rinominato Employee addEmployee:

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

Aggiornato quei due a addEmployee e l'errore è andato via e compilato ed eseguito come dovrebbe ..