2012-10-12 43 views
13

Jestem początkującą i robię ćwiczenie po książce. Poniżej znajduje się mój kod i mam tenBrakujący częściowy modyfikator w deklaracji .. inna deklaracja częściowa tego typu istnieje. "Jestem początkującym i po prostu podążam za książką

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

Co należy zrobić Mój kod jest w następujący sposób:.?

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

Odpowiedz

20

W innym miejscu zadeklarowanej klasy o tej samej nazwie (Form1) i nie jest to dec opatrzony modyfikatorem partial.

Jeśli dzieląc swoją klasę na dwóch różnych plików (na przykład plik w układzie UI i inny plik dla logiki), a następnie po prostu dodać modyfikator partial do deklaracji:

public partial class Form1 
{ 
} 
+1

@ user1742237 Domyślam się, że zmieniłeś domyślnie wygenerowaną klasę programu tak, aby zawierała deklarację Form1, ale zazwyczaj szablon aplikacji WinForm zawiera wygenerowaną klasę Form1 z pustym Formularz. Po prostu go usuń. –

+1

Musiałem przewinąć tak daleko, aby znaleźć bezpośrednią, zorientowaną na kod odpowiedź? W StackOverflow? ... – mmcrae

5

podczas tworzenia nowa forma, faktycznie jest tworzona w dwóch osobnych miejscach. jedno miejsce, w którym deklarowana jest klasa, to miejsce, w którym wdrażana jest cała instalacja hydrauliczna, oraz plik, który wkleiłeś tutaj, aby napisać całą funkcjonalność. w celu umożliwienia tego, C# ma częściową cechę klasy, jeśli w jakimś miejscu zespołu zdefiniowana jest klasa z częściowym modyfikatorem, wówczas można zdefiniować wiele deklaracji klasy, o ile ma ona ten modyfikator.

more on that in msdn

0

mogę być całkowicie błędne o tym, ale ja dostawałem ten sam błąd (i więcej) z MVC3 i EF4. Po tym jak uderzyłem głową o biurko na dzień lub dłużej, w końcu zdecydowałem się na upgrade do MVC4 i po prostu cierpię przez tę krzywą uczenia się, jeśli MVC3 nie będzie współpracować. Zabawne jest to, że wszystkie moje błędy zniknęły.

Przed aktualizacją, musiałem wykonać 100 wyszukiwań próbujących znaleźć moje duplikaty.

Wygląda na to, że MVC4 i EF4 grają razem ładniej.

1

Na wypadek, gdyby ktoś wpadł na to jak ja ... Zmieniłem grafikę Visual Studio 2013 dla Web i Visual Studio 2015 RC, by grać z moimi rozwiązaniami MVC.

Jeśli spróbujesz otworzyć rozwiązanie MVC4 w RC 2015, zrobi to trochę automagicznie, co może spowodować pojawienie się tego błędu następnym razem, gdy otworzysz to samo rozwiązanie w 2013 roku dla sieci.

Skończyło się na powrocie do poprzedniej aktualizacji SVN i tylko przy użyciu 2013 dla sieci i mój kod zbudowany dobrze, tak jak miał od lat. Wiem, że to nie jest właściwa poprawka, ale właśnie to spowodowało, że "wyskoczyło" znikąd w moim przykładzie.

0

TL; DR: spowodowany przez pozostałości klas, które zostały przemianowane przez VS2013, ale VS2013 nie zmieniła we właściwy sposób wszędzie, pozostawiając przypadki z dawną nazwą wiszącą w miejscach nieujawnionych.

SZCZEGÓŁ: Miałem dokładnie ten sam błąd w VS2013, w moim przypadku początkowo dodałem nową klasę "Pracownik", ale potem zdałem sobie sprawę, że powinien to być AddEmployee, więc kliknąłem prawym przyciskiem myszy i zmieniłem nazwę, i "pojawił się" zmień go we wszystkich właściwych miejscach.
Jakiś czas później próbowałem dodać klasę pracowników, a następnie dostałem błąd.Po wizycie tutaj, a nie znalezienie poprawkę, szukałem „całego rozwiązania” dla innych przypadkach pracownika i że pojawił się kilka nie od kiedy wcześniej przemianowany pracownika do AddEmployee:

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

Aktualizacja tych dwóch do AddEmployee i błąd zniknął i skompilował i działał tak, jak powinien.