Подтвердить что ты не робот

Имя типа {myUserControl} не существует в типе {myNamespace.myNamespace}

У меня проблема (очевидно, вопрос:)

У меня есть проект MyProject... поэтому остальная часть проекта использует по умолчанию любые классы в качестве пространства имен "MyProject"... без проблем.

В моем проекте я создал пользовательский элемент управления, на котором есть много других элементов управления (ярлык, текстовые поля и т.д.). Итак, этот класс ТАКЖЕ находится в пространстве имен по умолчанию "MyProject". Все компиляции не проблема. Чтобы подтвердить видимость области видимости, в этом пользовательском элементе управления я убедился, что код DESIGNER и Code-Behind (My code) являются ОБО Внутри одного и того же пространства имен MyProject (они есть), И они оба соответственно являются PUBLIC PARTIAL CLASS MyUserControl.

Теперь проблема. Я создаю простую форму (также в пространстве имен "MyProject" по умолчанию). Из панели инструментов существует "MyUserControl", поэтому я перетаскиваю его в MyNewForm. Перетаскивание в порядке.

Сохранить все, скомпилировать, сбой... Дизайнер добавляет дополнительную ссылку "MyProject", тем самым создавая впечатление, что пользовательский элемент управления фактически находится в MyProject.MyProject.MyUserControl.. вместо MyProject.MyUserControl.

Как только я вручную удалю дополнительный "MyProject.", сохраните и скомпилируйте, все в порядке. Однако, если я повторно отредактирую форму, измените что-то, M $изменит ее обратно на исходную ссылку "MyProject.MyUserControl".

Все, что сказано, вот фрагменты из моего проекта...

namespace MyProject
{
   partial class MyNewForm
   {
      ...
      private void InitializeComponent()
      {
         // THIS is the line that has the extra "MyProject." reference
         // when I manually remove it, all works perfectly
         this.MyUserControl1 = new MyProject.MyUserControl();
      }
   }


   private MyUserControl MyUserControl1;

}

Затем в определении MyUserControl у меня есть...

namespace MyProject
{
   public partial class MyUserControl : UserControl
   ...
}

и из MyUserControl через конструктор...

namespace MyProject
{
   public partial class MyUserControl : UserControl
   ...

}

Спасибо за помощь...

4b9b3361

Ответ 1

Что делает дизайнер, все в порядке.

- > У вас в вашем проекте есть пространство имен, называемое MyProject.MyProject.

(Попробуйте найти его в "Class View" )

Ответ 2

PS. любому, кто имеет такую ​​же проблему, но не нашел решения...

Предполагая, что вы создали новую WindowsFormApplication;

  • Создайте новый проект WindowsFormApplication, используя то же имя, что и его имя решения.
  • Предварительно созданное имя формы по умолчанию называется "Form1". И измените его имя так же, как имя проекта.
  • Добавить новый класс UserControl в проект.
  • Построить/перестроить проект и проверить, что usercontrol находится на панели инструментов.
  • Перетащите пользовательский элемент управления в форму и начните отладку.
  • Ошибка: имя типа 'userControlName' не существует в типе 'projectName.FormName'

У меня были исследования в сети для любого решения, но я не мог ответить на любой вопрос...

Но если вы измените имя формы, любое другое, отличное от имени проекта, оно будет разрешено.

Если вы настаиваете на том, что имя формы и имя проекта должны быть одинаковыми в зависимости от потребностей вашего проекта, можно создать пользовательскую DLL и использовать в нем пользовательский контроль.

Затем, чтобы использовать в качестве элемента управления, добавьте DLL файл в "ToolBox", используя "Выбрать элементы..."

Наконец, он будет готов к использованию.

PS2. борясь с той же проблемой в течение нескольких часов, это решение, которое я нашел.

Ответ 3

Имя пространства имен и имя класса должны быть разными. Код, сгенерированный добавлением WCF, автоматически ссылается на пространство имен, но если имя класса совпадает с именем пространства имен, сгенерированный код просматривает класс и ничего не будет компилироваться.

Ответ 4

Название элемента управления пользователя и формы совпадают. Использование разных имен решит проблему.

Ответ 5

Поскольку это был лучший результат поиска, когда у меня была эта ошибка, просто хочу опубликовать мою причину и решение.

  • У меня было два проекта в рамках решения, в котором был добавлен общий файл класса, который был добавлен в качестве ссылки.
  • Я добавил второй файл класса "helper" в качестве ссылки, использовал его код в первом и получил ошибку.

Проблема заключалась в том, что я не добавил второй класс "помощник" в качестве ссылки в обоих проектах.

Таким образом, у другого проекта был обновленный "общий" класс, но он не знал о классе "помощника", который он теперь использовал.

Примечание для себя: обратите больше внимания на столбец проекта списка ошибок:)

Ответ 6

Просто столкнулся с этим, когда у меня была MasterPage с явным

<%@ Import Namespace="MyNamespace" %>

в файле .master

Ответ 7

Это также происходит, когда вы используете разные страницы, но с тем же именем. В моем случае я создал набор данных "Grants.xsd" и страницу "Grants.aspx". Как-то они попали в конфликт, в результате чего эта ошибка.

Вы можете легко устранить эту проблему, наведя курсор на ключевое слово Culprit (имя класса) и в Visual Studio 2013, оно сообщит вам, где именно находится конфликт.