类型名称{myUserControl}在{myNamespace.myNamespace}类型中不存在

DRa*_*app 18 c# namespaces designer subclass

我有一个问题(显然问题:)

我有一个项目 - MyProject ...因此项目的其余部分使用任何类的默认值作为命名空间"MyProject"......没问题.

在我的项目中,我创建了一个自定义用户控件,其上有许多其他控件(标签,文本框等).因此,该类也在"MyProject"的默认命名空间内.所有编译都没有问题.为了确认范围可见性,在这个用户控件上,我确保DESIGNER代码和Code-Behind(我的代码)在同一个"MyProject"命名空间(它们是)中同时存在,并且它们分别是PUBLIC PARTIAL CLASS MyUserControl .

现在问题.我创建了一个简单的表单(默认情况下也在名称空间"MyProject"中).从工具箱中,"MyUserControl"存在,因此我将其拖到MyNewForm上.拖放很好.

保存所有,编译,失败...... Designer正在添加一个额外的"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;

}
Run Code Online (Sandbox Code Playgroud)

然后,在MyUserControl定义中,我有......

namespace MyProject
{
   public partial class MyUserControl : UserControl
   ...
}
Run Code Online (Sandbox Code Playgroud)

并通过设计师从MyUserControl ...

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

}
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助...

man*_*nji 17

设计师正在做的事情还可以.

- >你的项目中有一个名为的命名空间MyProject.MyProject.

(尝试在"课堂视图"中找到它)

  • 当您在某个命名空间中具有与其命名空间同名的类时,也会发生这种情况. (17认同)

小智 13

PS.任何有相同问题但没有找到任何解决方案的人......

假设您已经创建了一个新的WindowsFormApplication;

  1. 使用与其解决方案名称相同的名称创建新的WindowsFormApplication项目.
  2. 默认的预先创建的表单名称称为"Form1".并更改其名称与项目名称相同.
  3. 将新的UserControl类添加到项目中.
  4. 构建/重建项目并检查usercontrol是否位于Toolbox.
  5. 将usercontrol拖到窗体上并开始调试.
  • 错误:类型名称'userControlName'在'projectName.FormName'类型中不存在

我对网络进行了任何解决方案的研究,但无法提出任何答案......

但是,如果您更改与项目名称不同的任何其他表单名称,它将被解决.

如果您坚持根据项目需要,表单名称和项目名称必须相同,则可以创建自定义DLL并在其中使用usercontrol.

然后使用"选择项目..."将DLL文件添加到"ToolBox"中作为控件使用

最后它将准备好使用.

PS2.几个小时都在努力解决同样的问题,这是我找到的解决方案.

  • 我遇到了类似的问题.对我来说,它是一个与命名空间同名的类.开车送我疯了但是由于这个答案,我找到了它. (2认同)