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

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

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

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

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

сохранить все, компиляции, ошибкой... Дизайнер добавляет дополнительную ссылку "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 I иметь...

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

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

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

}

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

7 ответов


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

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

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


PS. для тех, кто имеет ту же проблему, но не нашел никакого решения...

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

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

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

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

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

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

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

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


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


имя пользователя и форма такие же. Использование разных имен решит проблему.


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

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

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

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

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


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

<%@ Import Namespace="MyNamespace" %>

в рамках .главный файл


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

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