18

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

我有一个项目——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...

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

}

谢谢您的帮助...

4

7 回答 7

19

设计师的做法是ok的。

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

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

于 2009-10-06T14:01:46.337 回答
13

PS。对于任何有同样问题但没有找到任何解决方案的人......

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

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

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

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

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

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

终于可以使用了。

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

于 2012-12-04T13:05:09.570 回答
3

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

于 2014-09-25T15:53:54.043 回答
1

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

于 2013-09-09T16:53:50.023 回答
0

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

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

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

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

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

于 2011-02-07T17:35:21.940 回答
0

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

<%@ Import Namespace="MyNamespace" %>

在 .master 文件中

于 2014-12-02T16:35:51.413 回答
0

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

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

于 2016-08-17T17:47:36.810 回答