Отсутствует модификатор частичного объявления... существует другое частичное объявление этого типа". Я новичок и просто следую книге

Я новичок и делаю упражнение по книге. Ниже мой код, и я получил это

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

person user1742237    schedule 12.10.2012    source источник


Ответы (6)


В другом месте вы объявили класс с тем же именем (Form1), а там он объявлен с модификатором partial.

Если вы разбиваете свой класс на два разных файла (например, этот файл для макета пользовательского интерфейса и другой файл для логики), просто добавьте модификатор partial в объявление:

public partial class Form1
{
}
person Adriano Repetti    schedule 12.10.2012
comment
@user1742237 user1742237 Я полагаю, вы изменили сгенерированный по умолчанию класс Program, включив в него объявление Form1, но обычно шаблон для приложения WinForms включает сгенерированный класс Form1 с пустой формой. Просто удалите его. - person Adriano Repetti; 13.10.2012
comment
Мне пришлось прокручивать это далеко, чтобы найти реальный прямой, ориентированный на код ответ? В StackOverflow? ... - person Don Cheadle; 24.03.2016

Когда вы создаете новую форму, она фактически создается в двух разных местах. одно место, где объявлен класс, — это то, где реализуется вся сантехника, и файл, который вы вставили сюда, для записи всей функциональности. ради того, чтобы сделать это возможным, С# имеет функцию частичного класса, если в каком-то месте сборки класс определен с частичным модификатором, тогда можно определить несколько объявлений класса, если он имеет этот модификатор.

подробнее об этом в msdn

person Igarioshka    schedule 12.10.2012

В моем случае эта ошибка возникла, когда я использовал приложение веб-формы в asp.net, и это произошло потому, что в моей разметке global.asax я заменил атрибут CodeBehind на CodeFile. Обратное изменение решило проблему.

person Jamshaid K.    schedule 19.10.2018

На всякий случай, если кто-то наткнется на это, как я... Я переключался между Visual Studio 2013 для Интернета и Visual Studio 2015 RC, чтобы поиграть с моими решениями MVC.

Если вы попытаетесь открыть решение MVC4 в версии 2015 RC, произойдет некоторая автоматическая магия, из-за которой эта ошибка может появиться в следующий раз, когда вы откроете это же решение в версии 2013 для Интернета.

В итоге я откатился к предыдущей версии SVN и использовал только 2013 для Интернета, и мой код работал нормально, как и в течение многих лет. Я знаю, что это неправильное исправление, но это то, что заставило это «всплывать» из ниоткуда в моем случае.

person Mike Wallace    schedule 05.06.2015
comment
То же самое происходит и со мной, переключение, но между VS 2015 и VS2019 вызывает это. - person AKS; 17.04.2019

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, и ошибка исчезла, скомпилировалась и запустилась, как и должна.

person sdjuan    schedule 02.08.2017

Я могу ошибаться в этом, но я получал ту же ошибку (и многое другое) с MVC3 и EF4. Пробыв день или около того головой об стол, я, наконец, решил перейти на MVC4 и просто терпеть эту кривую обучения, если MVC3 не собирался сотрудничать. Самое смешное, что все мои ошибки ушли.

Перед обновлением я должен был выполнить 100 поисков, пытаясь найти повторяющиеся объявления.

Кажется, что MVC4 и EF4 лучше работают вместе.

person Sum None    schedule 24.03.2015