【问题标题】:Missing partial modifier on declaration ..another partial declaration of this type exists". I'm a beginner and just following the book声明中缺少部分修饰符..存在这种类型的另一个部分声明”。我是初学者,只是在学习这本书
【发布时间】:2012-10-12 20:14:11
【问题描述】:

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

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

【问题讨论】:

    标签: c# winforms declaration partial form-control


    【解决方案1】:

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

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

    public partial class Form1
    {
    }
    

    【讨论】:

    • @user1742237 我猜您确实更改了默认生成的 Program 类以包含 Form1 声明,但通常 WinForms 应用程序的模板包含生成的 Form1 类和一个空的 Form。直接删除即可。
    • 我必须滚动这么远才能找到一个实际的直截了当、面向代码的答案?在 StackOverflow 上? ...
    【解决方案2】:

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

    more on that in msdn

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

        • 我的情况完全一样,在 VS 2015 和 VS2019 之间切换会导致这种情况。
        【解决方案5】:

        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 并且错误消失并按应有的方式编译和运行..

        【讨论】:

          【解决方案6】:

          对此我可能完全错了,但我在使用 MVC3 和 EF4 时遇到了同样的错误(甚至更多)。在桌子上敲了一天左右的头后,我最终决定升级到 MVC4,如果 MVC3 不配合,我就只能忍受学习曲线。有趣的是,我所有的错误都消失了。

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

          似乎 MVC4 和 EF4 一起玩更好。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-11-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-11-14
            • 1970-01-01
            相关资源
            最近更新 更多