【问题标题】:The type name {myUserControl} does not exist in the type {myNamespace.myNamespace}类型名称 {myUserControl} 不存在于类型 {myNamespace.myNamespace}
【发布时间】:2010-12-04 06:42:22
【问题描述】:

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

我有一个项目——MyProject...因此项目的其余部分使用任何类的默认命名空间“MyProject”...没问题。

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

现在的问题。我创建了一个简单的表单(默认情况下也在命名空间“MyProject”中)。从工具箱中,“MyUserControl”存在,所以我将它拖到 MyNewForm 上。拖放很好。

全部保存,编译,失败...设计器正在添加一个额外的“MyProject”引用,因此看起来用户控件实际上位于 MyProject.MyProject.MyUserControl .. 而不是 MyProject.MyUserControl。

只要我手动删除了额外的“MyProject.”,保存并编译,一切都很好。但是,如果我重新编辑表单,更改某些内容,M$ 会将其更改回原来的“MyProject.MyUserControl”引用。

说了这么多,这里是我项目中的sn-ps...

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
   ...

}

感谢您的帮助...

【问题讨论】:

    标签: c# namespaces designer subclass


    【解决方案1】:

    设计师做的没问题。

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

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

    【讨论】:

    • 也会发生,当你在某个命名空间中有一个与它的命名空间同名的类时。
    【解决方案2】:

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

    • 我在一个解决方案中有两个项目,共享一个作为链接添加的“通用”类文件。
    • 我添加了第二个“帮助”类文件作为链接,在第一个中使用了它的代码,但出现了错误。

    问题是我没有在两个项目中添加第二个“助手”类作为链接。

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

    自我提醒:多注意错误列表的项目栏:)

    【讨论】:

      【解决方案3】:

      附言。给遇到同样问题但没有找到任何解决方案的人...

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

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

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

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

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

      然后要用作控件,使用“选择项目...”将 DLL 文件添加到“工具箱”

      终于可以使用了。

      PS2。为同一个问题苦苦挣扎了几个小时,这就是我找到的解决方案。

      【讨论】:

      • 我遇到了类似的问题。对我来说,它是一个与命名空间同名的类。让我发疯,但多亏了这个答案,我找到了。
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          刚遇到这种情况,我有一个明确的 MasterPage

          <%@ Import Namespace="MyNamespace" %>
          

          在 .master 文件中

          【讨论】:

            【解决方案7】:

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

            您可以通过将鼠标悬停在罪魁祸首关键字(类名)上轻松解决此问题,在 Visual Studio 2013 中,它会告诉您冲突的确切位置。

            【讨论】:

              猜你喜欢
              • 2020-03-05
              • 2013-08-05
              • 1970-01-01
              • 2022-01-10
              • 1970-01-01
              • 1970-01-01
              • 2020-03-31
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多