私は初心者で、本に続いて練習をしています。以下は私のコードであり、私はこれを得ました
"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;
}
}
}
別の場所で、同じ名前(Form1
)そしてpartial
修飾子で宣言されています。
クラスを2つの異なるファイルに分割する場合(たとえば、UIレイアウト用のこのファイルとロジック用の別のファイル)、宣言にpartial
修飾子を追加するだけです。
public partial class Form1
{
}
新しいフォームを作成すると、実際には2つの別々の場所に作成されます。クラスが宣言される1つの場所は、すべての配管が実装されている場所、およびここに貼り付けたファイルで、すべての機能を記述します。これを可能にするために、c#には部分クラス機能があります。アセンブリのどこかでクラスが部分修飾子で定義されている場合、その修飾子がある限り、クラスの複数の宣言を定義できます。
私の場合、asp.net
でWebフォームアプリケーションを使用しているときにこのエラーが発生しました。これは、global.asax
マークアップでCodeBehind
属性をCodeFile
に置き換えたためです。元に戻すと問題が解決しました。
誰かが私のようにこれに遭遇した場合に備えて... Visual Studio 2013 for WebとVisual Studio 2015 RCを交互に切り替えて、MVCソリューションで遊んでいます。
2015 RCでMVC4ソリューションを開こうとすると、いくつかのオートマジックが行われ、2013でWebに対して同じソリューションを開いたときに、このエラーが発生する可能性があります。
私は以前のSVNリビジョンにロールバックし、2013年のWebのみを使用して、私のコードは何年も同じようにうまくビルドされました。これが適切な修正ではないことはわかっていますが、これが原因で、インスタンス内のどこからでも「ポップアップ」します。
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に更新すると、エラーは解消され、コンパイルされ、正常に実行されました。
私はこれについて完全に間違っているかもしれませんが、MVC3とEF4で同じエラー(およびそれ以上)が発生していました。デスクで頭を1日ほど叩いた後、ようやくMVC4にアップグレードすることを決めました。面白いのは、私のエラーがすべてなくなったことです。
アップグレードする前に、重複する宣言を見つけるために100回の検索を実行している必要があります。
MVC4とEF4を一緒にすると、Niceがよりよく再生されるようです。