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

时间:2009-10-06 13:27:55

标签: 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;

}

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

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

和MyUserControl通过Designer ......

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

}

感谢您的帮助...

7 个答案:

答案 0 :(得分:16)

设计师正在做的事情是好的。

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

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

答案 1 :(得分:12)

<强> PS。任何有相同问题但未找到任何解决方案的人......

假设您已创建新的WindowsFormApplication;

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

    我曾在网上研究任何解决方案,但无法提出任何答案......

    但是,如果你更改了与项目名称不同的表单名称,它将被解析。

    如果您坚持表单名称和项目名称必须相同,具体取决于您的项目需求,则可以创建自定义DLL并在其中使用usercontrol。

    然后使用“选择项目...”

    将其用作控件,将DLL文件添加到“ToolBox”

    最后它将准备好使用。

    <强> PS2。在几个小时内遇到同样的问题,这就是我找到的解决方案。

答案 2 :(得分:2)

命名空间名称和类名称需要不同。通过添加WCF生成的代码自动引用Namespace,但如果Class名称与Namespace名称相同,则生成的代码将查看Class,并且不会编译任何内容。

答案 3 :(得分:1)

用户控件名称和表单相同。使用不同的名称将解决问题。

答案 4 :(得分:0)

由于这是我遇到此错误时的最佳搜索结果,因此只想发布我的原因和解决方案。

  • 我在解决方案中有两个项目,共享一个“公共”类文件,该文件已添加为链接。
  • 我添加了第二个'helper'类文件作为链接,在第一个中使用了它的代码,并得到了错误。

问题是我没有将第二个'帮助'类添加为两个项目中的链接。

所以另一个项目有一个更新的'普通'类,但不知道它现在使用的'帮助'类。

自我注意:更多关注错误列表的项目列:)

答案 5 :(得分:0)

刚遇到这个我有一个明确

的母版页
<%@ Import Namespace="MyNamespace" %>
<。>在.master文件中

答案 6 :(得分:0)

当您使用不同的页面但名称相同时,也会发生这种情况。在我的例子中,我创建了“Grants.xsd”数据集和“Grants.aspx”页面。不知怎的,他们发生冲突导致了这个错误。

您可以通过将鼠标悬停在culprit关键字(类名称)上来轻松解决此问题,并且在Visual Studio 2013中,它会准确地告诉您冲突的位置。