2017-10-11 145 views
0

在Visual Studio Express 2013中,我制作了一个名为“AddressVerifier”的自定义控件,该控件具有一个名为“CustomButton”的自定义按钮。每次我修改表单时,即使只是移动一个标签,它也会修改AddressVerifier.Designer.vb文件,这会创建一个编译错误,如图所示。如果我选择前两个修复中的任何一个,它会编译好,一切都很好,直到我再次修改表单,然后删除下一次编译的修复。类型未定义,Visual Studio Express 2013

我几乎是一定的这是一个错误,但是有没有解决方法?

enter image description here

+1

不要发布您的代码的图像。这使我们更难以帮助你,这意味着你不太可能得到一个好的答案。 –

+0

每次对表单进行更改时,整个设计器文件都会被重新写出(该帖子称它是AddressVerifier设计器,但看起来更像是使用控件的表单*)。丢失的参考可能是由于CustomButton项目包含的方式和/或命名空间 – Plutonix

+0

Joel,我发布了一个带有提供的修补程序的代码图像。这就是为什么只有一张图像可以做到。 Plutonix对我来说很奇怪的一点是,当我选择提供的修复程序时,它可以工作,但是当我修改表单时它会将问题添加回来。问题似乎是表单设计者不断修改代码来创建编译错误。 AddressVerifier是用作自定义控件的表单,但它包含CustomButton。所以基本上它是自定义控件中的自定义控件。 – PaulOTron2000

回答

1

这可能是由于名称冲突。看起来你可能有一个类型和名称空间,都称为AddressVerifier。 IDE使用代码中名称空间的名称,但编译器将其解释为类型。解决方法是不要在同一个上下文中使用相同的名称来处理两件事情。

编辑:添加Global限定符的建议是强制编译器将名称解释为命名空间而不是类型。它在设计代码文件重新生成时恢复,因为IDE不会扫描名称冲突的每种可能的类型和名称空间,而只是假设您已命名事物,以防止它们发生。它可以被认为是一个限制,但不是IDE中的一个错误。

+0

完全是这样。我的命名空间和类都是相同的。将类名更改为AddressVerifyClass和boom,全部消失。我敢打赌,我没有看到这看起来很蹩脚,但这里有一个忏悔:我可能是最经常“遇到.NET的程序员”。多年前,我曾是一名VB6程序员(而且我很出色),但是在.net之前改变了职业生涯,现在我通过实例做了几乎所有的事情,只是为自己的业务制作软件。 – PaulOTron2000

+0

我认为避免这种类型问题的最好方法是始终使用“商业名称”命名项目,从而为根名称空间命名。例如,如果我正在创建一个名为AddressVerifier的项目,那么实际的项目名称和根名称空间将是'Wunnell.AddressVerifier'。尽管如此,我仍然建议避免在同一个环境下使用同一个名称来处理两个不同的事情。我还建议在这里写一些更多的思想到你的名字中,并提出两个不同的名字,这些名字是最具描述性的,因为“AddressVerifyClass”相当狡猾。 – jmcilhinney

相关问题