在声明中缺少部分修饰符..这种类型的另一部分声明存在“。我是初学者,只是跟着这本书

时间:2012-10-12 20:14:12

标签: c# winforms declaration partial form-control

我是初学者,我正在读一本书。下面是我的代码,我得到了这个

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

6 个答案:

答案 0 :(得分:27)

在另一个地方你声明了一个具有相同名称(Form1)的类,并使用partial修饰符声明它。

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

public partial class Form1
{
}

答案 1 :(得分:5)

创建新表单时,实际上是在两个不同的位置创建的。声明类的一个地方是实现所有管道的地方,以及您在此处粘贴的文件,以编写所有功能。为了使这成为可能,c#具有部分类特征,如果在程序集的某个位置使用partial修饰符定义类,则可以定义该类的多个声明,只要它具有该修饰符。 / p>

more on that in msdn

答案 2 :(得分:2)

在我的情况下,当我在asp.net中使用Web表单应用程序时发生了此错误,这是因为在我的global.asax标记中,我已将CodeBehind属性替换为{{1} }。改回来解决了这个问题。

答案 3 :(得分:1)

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

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

我最终回滚到以前的SVN版本,只使用了2013年的Web,我的代码就像它多年来一样构建得很好。我知道这不是正确的解决办法,但这就是导致这种情况发生的原因。在我的实例中无处不在。

答案 4 :(得分:0)

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

升级之前,我必须完成100次搜索才能找到我的重复声明。

似乎MVC4和EF4在一起发挥得更好。

答案 5 :(得分:0)

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 {

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