Имя типа {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;
- создайте новый проект WindowsFormApplication, используя то же имя, что и имя решения.
- имя предварительно созданной формы по умолчанию называется "Form1". И изменить его название так же, как название проекта.
- Добавить новый класс UserControl в проект.
- построить/перестроить проект и проверьте, что usercontrol находится в Toolbox.
- перетащите usercontrol в форму и начните отладку.
- ошибка: имя типа "userControlName" не существует в типе " projectName.FormName'
У меня были исследования в сети для любого решения, но я не мог придумать никакого ответа...
но если вы измените имя формы на любое другое, отличное от имени проекта, это будет решенный.
Если вы настаиваете на том, что имя формы и имя проекта должны быть одинаковыми в зависимости от ваших потребностей проекта, пользовательская DLL может быть создана и использовать usercontrol в нем.
затем, чтобы использовать в качестве элемента управления, добавьте DLL-файл в "ToolBox", используя " выбрать элементы..."
наконец, он будет готов к использованию.
PS2. борюсь с той же проблемой в течение нескольких часов, это решение я нашел.
имя пространства имен и имя класса должны быть разными. Код, сгенерированный добавлением WCF, автоматически ссылается на пространство имен, но если имя класса совпадает с именем пространства имен, сгенерированный код смотрит на класс и ничего не компилируется.
Так как это был лучший результат поиска, когда у меня была эта ошибка, просто хочу опубликовать свою причину и решение.
- у меня было два проекта в решении, разделяя "общий" файл класса, который был добавлен в качестве ссылки.
- я добавил второй файл класса "helper" в качестве ссылки, использовал его код в первом и получил ошибку.
проблема заключалась в том, что я не добавил второй класс "helper" в качестве ссылки в обоих проектах.
таким образом, другой проект имел обновленный "общий" класс, но не знание "вспомогательного" класса, который он теперь использовал.
Примечание для себя: обратите больше внимания на столбец проекта списка ошибок:)
просто столкнулся с этим, где у меня была MasterPage, которая имела явный
<%@ Import Namespace="MyNamespace" %>
в рамках .главный файл
Это также происходит, когда вы используете разные страницы, но с одинаковым именем. В моем случае я создал "гранты".xsd и" данных и "гранты.страница ASPX. Каким-то образом они попали в конфликт, что привело к этой ошибке.
вы можете легко снять это, наведя курсор на ключевое слово виновника (имя класса), и в Visual Studio 2013 он скажет вам, где именно конфликт.