声明上缺少部分修饰符..存在另一种此类部分声明"。我是初学者,只是关注这本书



我是初学者,我正在按照一本书做练习。下面是我的代码,我得到了这个

"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修饰符声明。

如果要将类拆分为两个不同的文件(例如,此文件用于 UI 布局,另一个文件用于逻辑),则只需将 partial 修饰符添加到声明中:

public partial class Form1
{
}

当您创建新窗体时,它实际上是在两个不同的位置创建的。 声明类的一个位置是实现所有管道的位置,以及您粘贴在此处的文件,用于编写所有功能。 为了实现这一点,C# 具有分部类功能,如果在程序集的某个位置使用分部修饰符定义类, 然后可以定义类的多个声明,只要它具有该修饰符。

MSDN 中对此进行了更多介绍

就我而言,当我在 asp.net 中使用 Web 表单应用程序时会发生此错误,这是因为在我的 global.asax 标记中,我CodeBehind属性替换为 CodeFile 。将其更改回来解决了问题。

以防万一有人像我一样偶然发现这个......我一直在Visual Studio 2013 for Web和Visual Studio 2015 RC之间来回切换,以使用我的MVC解决方案。

如果您尝试在 2015 RC 中打开 MVC4 解决方案,它会执行一些自动操作,这可能会导致下次您在 2013 年为 Web 打开相同的解决方案时出现此错误。

我最终回滚到以前的SVN版本,并且只使用2013 for Web,我的代码构建得很好,就像多年来一样。我知道这不是正确的解决方法,但这就是导致它在我的实例中突然"弹出"的原因。

TL;DR:由VS2013重命名的类的痕迹引起,但VS2013没有在任何地方正确重命名,使旧名称的实例悬而未决。

细节:我在VS2013中遇到了完全相同的错误,在我的情况下,最初我添加了一个新的类"员工",但后来意识到它应该是AddEmployee,所以我右键单击并更改了名称,它"出现"在所有正确的位置更改它。
过了一会儿,我尝试添加一个 Employee 类,然后得到错误。访问这里但没有找到修复程序后,我在"整个解决方案"中搜索了 Employee 的其他实例,结果从我之前将 Employee 重命名为 AddEmployee 时出现了几次失败:

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

将这两个更新为AddEmployee,错误消失并编译并运行

我可能完全错了,但我在 MVC3 和 EF4 中遇到了同样的错误(以及更多)。在把头撞在桌子上一天左右之后,我终于决定升级到 MVC4,如果 MVC3 不合作,我就忍受这个学习曲线。有趣的是,我所有的错误都消失了。

在升级之前,我必须进行 100 次搜索以试图找到我的重复声明。

似乎 MVC4 和 EF4 一起玩得更好。

最新更新