VS2017 C# При импорте WinForms возникают ошибки пространства имен - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть два решения, одно функциональное, другое экспериментальное. Я сделал несколько форм и код, который хочу импортировать из Экспериментального в Функциональный.

Я следовал найденным указаниям здесь , чтобы импортировать формы.

  1. Добавить существующий файлы (cs, designer и resx) из папки Experimental
  2. Исключить их из решения
  3. Добавить их снова из папки Functional
  4. Готово (вроде)

Я столкнулся с тем, что мне нужно было изменить пространство имен в файле FormOne.Designer.cs, чтобы оно соответствовало функциональному решению:

namespace WindowsFormsApp1

Изменено на:

namespace ProjName

После этого и сохранения он работал для FormOne.

Но выполнить точно такую ​​же процедуру (по одной форме за раз) для FormTwo и FormThree не удалось. Когда я пытаюсь построить или перестроить решение или проект, я получаю:

FormTwo.Dispose(bool): no suitable method found to override

Я получаю ту же ошибку для FormTwo и FormThree. Я сделал копию / вставку строки пространства имен, чтобы не вводить опечатку при ее вводе.

1 Ответ

0 голосов
/ 27 апреля 2020

Формы используют функциональность класса partial для объединения Form1 в файле кода, который вы редактируете (Form1.cs), с Form1 в файле, который редактор редактирует (Form1.Designer.cs)

Код конструктора переопределяет Dispose(), метод, который он может переопределять, поскольку класс Form1 в Form1.cs наследуется от Form, который имеет переопределяемый Dispose(). partial class Form1 в файле конструктора ничего не наследует (он не может наследовать Form также потому, что это уже сделано в Form1.cs; вы не можете наследовать дважды)

Если вы измените Пространство имен класса Form1 в классе Form1.cs и забудьте изменить пространство имен этого класса в Form1.Designer.cs. Вы вызовете два класса, оба с именем Form1 в вашем проекте, в разных пространствах имен. Form1 in the Designer file, that doesn't inherit from Form, cannot thus have a Dispose () `для переопределения:

enter image description here

FWIW вам не нужно редактировать пространства имен; ваши формы из старого пространства имен можно использовать в формах нового пространства имен, просто добавив «using OldNamespace» вверху форм в новом пространстве имен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...