web-dev-qa-db-ja.com

宣言に部分修飾子がありません。このタイプの別の部分宣言が存在します。 "私は初心者であり、ただ本に従っています

私は初心者で、本に続いて練習をしています。以下は私のコードであり、私はこれを得ました

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

どうすればよいですか?私のコードは次のとおりです。

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

別の場所で、同じ名前(Form1)そしてpartial修飾子で宣言されています。

クラスを2つの異なるファイルに分割する場合(たとえば、UIレイアウト用のこのファイルとロジック用の別のファイル)、宣言にpartial修飾子を追加するだけです。

public partial class Form1
{
}
29
Adriano Repetti

新しいフォームを作成すると、実際には2つの別々の場所に作成されます。クラスが宣言される1つの場所は、すべての配管が実装されている場所、およびここに貼り付けたファイルで、すべての機能を記述します。これを可能にするために、c#には部分クラス機能があります。アセンブリのどこかでクラスが部分修飾子で定義されている場合、その修飾子がある限り、クラスの複数の宣言を定義できます。

msdnの詳細

5
Igarioshka

私の場合、asp.netでWebフォームアプリケーションを使用しているときにこのエラーが発生しました。これは、global.asaxマークアップでCodeBehind属性をCodeFileに置き換えたためです。元に戻すと問題が解決しました。

2
Jamshaid Kamran

誰かが私のようにこれに遭遇した場合に備えて... Visual Studio 2013 for WebとVisual Studio 2015 RCを交互に切り替えて、MVCソリューションで遊んでいます。

2015 RCでMVC4ソリューションを開こうとすると、いくつかのオートマジックが行われ、2013でWebに対して同じソリューションを開いたときに、このエラーが発生する可能性があります。

私は以前のSVNリビジョンにロールバックし、2013年のWebのみを使用して、私のコードは何年も同じようにうまくビルドされました。これが適切な修正ではないことはわかっていますが、これが原因で、インスタンス内のどこからでも「ポップアップ」します。

1
Mike Wallace

TL; DR:VS2013によって名前が変更されたクラスの痕跡が原因で発生しましたが、VS2013はすべての場所で適切に名前を変更せず、古い名前のインスタンスが非公開の場所にぶら下がっていました。

詳細:VS2013でもまったく同じエラーが発生しました。私の場合、最初に新しいクラス "Employee"を追加しましたが、それがAddEmployeeである必要があることに気付いたので、右クリックして名前を変更し、すべてを変更するために '表示されました'適切な場所。
しばらくして、私はEmployeeクラスを追加しようとしたところ、エラーが発生しました。ここにアクセスして修正を見つけなかった後、「ソリューション全体」でEmployeeの他のインスタンスを検索したところ、以前にEmployeeの名前をAddEmployeeに変更したときから、いくつかの失敗がありました。

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

これら2つをAddEmployeeに更新すると、エラーは解消され、コンパイルされ、正常に実行されました。

1
sdjuan

私はこれについて完全に間違っているかもしれませんが、MVC3とEF4で同じエラー(およびそれ以上)が発生していました。デスクで頭を1日ほど叩​​いた後、ようやくMVC4にアップグレードすることを決めました。面白いのは、私のエラーがすべてなくなったことです。

アップグレードする前に、重複する宣言を見つけるために100回の検索を実行している必要があります。

MVC4とEF4を一緒にすると、Niceがよりよく再生されるようです。

0
Sum None